在 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 {}
}
uj5u.com熱心網友回復:
是的,作為執行函式的一部分,您需要等待所有異步作業完成。如果您不回傳在所有作業完成后解決的承諾(當您正確使用 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 {}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479894.html
標籤:javascript 火力基地 异步等待 谷歌云功能
