Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

同步、異步和承諾

管理函數的生命週期以確保它正確解析很重要。通過正確終止函數,您可以避免運行時間過長或無限循環的函數產生過多費用。此外,您可以確保在您的函數成功達到其終止條件或狀態之前,運行您的函數的 Cloud Functions 實例不會關閉。

使用這些推薦的方法來管理功能的生命週期:

  • 解析函數,通過返回執行異步處理(也稱為“後台功能”)的JavaScript承諾
  • 終止HTTP函數res.redirect() res.send()res.end()
  • 終止與同步功能return;陳述。

使用 JavaScript 承諾簡化異步代碼

Promise 是異步代碼回調的現代替代方案。一個承諾代表一個操作和它可能返回的未來值。它還允許您在同步代碼中傳播類似於 try/catch 的錯誤。你可以閱讀有關的火力地堡SDK承諾的火力地堡博客,並承諾在一般的MDN

Promise 如何與函數一起工作

當您向函數返回 JavaScript 承諾時,該函數會一直運行,直到承諾被解析或拒絕。為了表明一個函數已經成功地完成了它的工作,promise 應該被解析。為了表明錯誤,應拒絕承諾。這意味著您只需要處理您想要的錯誤。

下面的代碼需要火力地堡實時數據庫ref並將其值設置為"world!" .通過返回的結果set ,你的功能是保證繼續運行,直到寫入字符串到數據庫的異步工作全面完成:

// Always change the value of "/hello" to "world!"
exports.hello = functions.database.ref('/hello').onWrite(event => {
  // set() returns a promise. We keep the function alive by returning it.
  return event.data.ref.set('world!').then(() => {
    console.log('Write succeeded!');
  });
});

上下文中的示例

我們大多數的雲功能的代碼示例包括適當的功能結束的例子。以下是一些典型案例: