給定 Firebase 云功能,在不導致冷啟動的情況下使事件失?。ㄒ鈭D重試)的正確方法是什么?本文檔表明未處理的錯誤會導致冷啟動。當使用async功能時,我假設這Promise也適用于被拒絕的情況。throw new Error('我讓你失望了'); // 如果沒有捕獲將會導致冷啟動鑒于函數通常依賴于可能不是 100% 可靠的第三方服務,我不希望我的函數因暫時性下游錯誤而導致冷啟動而遭受進一步的懲罰。這甚至是推薦策略嗎?我正在使用 Firestore,因此我考慮將可重試事件存儲在由計劃的云函數刮取的臨時集合中,但這似乎不必要地復雜。
1 回答

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
被拒絕的承諾本身并不是“未處理的錯誤”。您所顯示的是拋出的異常,與承諾沒有任何直接關系。逃脫函數回調的拋出異常被視為未處理。如果您需要故意使函數調用失敗,只需返回一個被拒絕的 Promise,不要像您引用的示例代碼現在所做的那樣拋出任何內容。
如果需要,可以使用Promise.reject()創建一個簡單的被拒絕的 Promise?:
return?Promise.reject(new?Error('fail'))