Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

同步、異步和承諾

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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

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

  • 通過返回JavaScript promise來解析執行異步處理的函數(也稱為“後台函數”)。
  • 使用res.redirect()res.send()res.end()終止HTTP 函數
  • 以返回終止同步函數return;陳述。

使用 JavaScript Promise 簡化異步代碼

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

Promise 如何與函數一起工作

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

以下代碼採用 Firebase 實時數據庫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!');
  });
});

上下文中的示例

我們的大多數 Cloud Functions代碼示例都包含正確終止函數的示例。以下是一些演示典型案例: