![](/img/trans.png)
[英]Returning a promise when using async/await in Firebase Cloud Functions
[英]Using async/await inside firebase cloud functions
在 firebase 云函数中执行异步任务时,我是否需要await
每个任务,如下例所示:
exports.function = functions.https.onCall(data,context)=>{
await db.doc('someCollection/someDoc').update({someField: 'someValue'})
await db.doc('someCollection/someDoc2').update({someField: 'someValue'})
await db.doc('someCollection/someDoc3').update({someField: 'someValue'})
return {}
}
还是我可以触发这些异步调用? 鉴于我不需要根据从这些任务收到的数据向客户端返回任何内容,如下面的另一个示例所示:
exports.function = functions.https.onCall(data,context)=>{
db.doc('someCollection/someDoc').update({someField: 'someValue'})
db.doc('someCollection/someDoc2').update({someField: 'someValue'})
db.doc('someCollection/someDoc3').update({someField: 'someValue'})
return {}
}
是的,作为执行函数的一部分,您需要等待所有异步工作完成。 如果您不返回在所有工作完成后解决的承诺(当您正确使用 await 时,异步函数会这样做),那么异步工作很可能无法自行完成。
该文档指出:
要在异步操作后返回数据,请返回一个 Promise。 Promise 返回的数据被发送回客户端。
您的第一个代码示例中缺少的一件事是使 await 正常工作的 async 关键字:
exports.function = functions.https.onCall(async (data,context) => {
db.doc('someCollection/someDoc').update({someField: 'someValue'})
db.doc('someCollection/someDoc2').update({someField: 'someValue'})
db.doc('someCollection/someDoc3').update({someField: 'someValue'})
return {}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.