Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase函数中的异步函数返回什么?_Javascript_Typescript_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript Firebase函数中的异步函数返回什么?

Javascript Firebase函数中的异步函数返回什么?,javascript,typescript,firebase,google-cloud-functions,Javascript,Typescript,Firebase,Google Cloud Functions,在异步函数中,是否需要返回等待函数正确完成,或者下面的代码是否正常 const db = admin.firestore(); export const onUserCreate = functions.auth.user().onCreate(async event => { try { const user: User = { userId: event.data.uid, email: event.data.e

在异步函数中,是否需要返回等待函数正确完成,或者下面的代码是否正常

const db = admin.firestore();

export const onUserCreate = functions.auth.user().onCreate(async event => {
    try {
        const user: User = {
            userId: event.data.uid,
            email: event.data.email
        };

        await db.doc(`users/${user.userId}`).set(user, {merge: true});
    } catch (error) {
        throw error;
    }
});

此函数已返回一个承诺,该承诺仅在您的
db.doc(…).set(…)
自身解析后才解析<代码>返回等待在这种情况下是多余的


因此,我认为您的代码很好,但是非常简单,完全忘记使用async/await,直接返回承诺可能会有所改进。例如:
返回db.doc(…).set(…)
,而不将函数声明为异步。

如果在等待之前出于任何原因触发catch块,会发生什么情况?@DougStevenson在任何情况下(函数声明为异步或直接返回),如果最初抛出它的是
db.doc
调用,则返回的承诺将被拒绝并出现错误。如果抛出错误的不是调用(例如,如果未定义
事件
),那么异步函数仍然拒绝承诺,但如果直接返回,错误将像往常一样在调用堆栈中冒泡。