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
调用,则返回的承诺将被拒绝并出现错误。如果抛出错误的不是调用(例如,如果未定义事件
),那么异步函数仍然拒绝承诺,但如果直接返回,错误将像往常一样在调用堆栈中冒泡。