在 firebase 云函数中使用 async/await
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 {}
}
或者我可以触发这些异步调用吗?鉴于我不需要 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 {}
}
是的,作为执行函数的一部分,您需要等待所有异步工作完成。如果您不 return 承诺在所有工作完成时解决(当您正确使用 await 时异步函数会执行),异步工作很可能无法自行完成。
documentation 状态:
To return data after an asynchronous operation, return a promise. The data returned by the promise is sent back to the client.
您的第一个代码示例中缺少一个可以使 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 {}
}
在 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 {}
}
或者我可以触发这些异步调用吗?鉴于我不需要 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 {}
}
是的,作为执行函数的一部分,您需要等待所有异步工作完成。如果您不 return 承诺在所有工作完成时解决(当您正确使用 await 时异步函数会执行),异步工作很可能无法自行完成。
documentation 状态:
To return data after an asynchronous operation, return a promise. The data returned by the promise is sent back to the client.
您的第一个代码示例中缺少一个可以使 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 {}
}