Firebase Cloud Function:如何在不导致冷启动的情况下使可重试事件失败?

给定 Firebase 云功能,在不导致冷启动的情况下使事件失败(意图重试)的正确方法是什么?

本文档表明未处理的错误会导致冷启动。当使用async功能时,我假设这Promise也适用于被拒绝的情况。

throw new Error('我让你失望了'); // 如果没有捕获将会导致冷启动

鉴于函数通常依赖于可能不是 100% 可靠的第三方服务,我不希望我的函数因暂时性下游错误而导致冷启动而遭受进一步的惩罚。

这甚至是推荐策略吗?我正在使用 Firestore,因此我考虑将可重试事件存储在由计划的云函数刮取的临时集合中,但这似乎不必要地复杂。


陪伴而非守候
浏览 129回答 1
1回答

慕田峪9158850

被拒绝的承诺本身并不是“未处理的错误”。您所显示的是抛出的异常,与承诺没有任何直接关系。逃脱函数回调的抛出异常被视为未处理。如果您需要故意使函数调用失败,只需返回一个被拒绝的 Promise,不要像您引用的示例代码现在所做的那样抛出任何内容。如果需要,可以使用Promise.reject()创建一个简单的被拒绝的 Promise :return Promise.reject(new Error('fail'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript