簡體   English   中英

Firebase 雲功能:如何在不導致冷啟動的情況下使可重試事件失敗?

[英]Firebase Cloud Function: How to fail a retryable event without causing a cold start?

給定 Firebase 雲函數,在不導致冷啟動的情況下使事件失敗(旨在重試)的正確方法是什么?

該文檔表明未處理的錯誤會導致冷啟動。 使用async功能時,我假設這也適用於被拒絕的Promise

throw new Error('我讓你失望了'); // 如果沒有被捕獲會導致冷啟動

鑒於函數通常依賴於可能不是 100% 可靠的第三方服務,我不希望我的函數因瞬時下游錯誤而因冷啟動而受到進一步的懲罰。

這甚至是推薦的策略嗎? 我正在使用 Firestore,因此我考慮將可重試事件存儲在由計划的雲函數抓取的臨時集合中,但這似乎不必要地復雜。

被拒絕的承諾本身並不是“未處理的錯誤”。 你展示的是一個拋出的異常,與承諾沒有任何直接關系。 逃避函數回調的拋出異常被認為是未處理的。 如果您需要故意使函數調用失敗,只需返回一個被拒絕的 promise ,不要像您引用的示例代碼現在所做的那樣拋出任何內容。

如有必要,可以使用Promise.reject()創建一個簡單的拒絕承諾:

return Promise.reject(new Error('fail'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM