给定Firebase函数,在不导致冷启动的情况下,失败事件(意图重试)的正确方法是什么?
这份文件认为,未经处理的错误会导致冷启动。在使用async功能时,我假设这也适用于被拒绝的Promise。
抛出新错误(‘我失败了’);//如果没有捕捉到,将导致冷启动
考虑到功能通常依赖于第三方服务,而这些服务可能不是100%可靠的,我不希望我的功能因短暂的下游错误而因冷启动而招致进一步的惩罚。
这甚至是一个推荐的策略吗?我正在使用Firestore,所以我考虑将可还原的事件存储在一个临时集合中,这个集合被计划的云函数所刮取,但这似乎是不必要的复杂。
发布于 2020-11-20 22:35:11
被拒绝的承诺本身并不是“未处理的错误”。您所显示的是抛出的异常,与承诺没有任何直接关系。转义函数回调的抛出异常被认为是未处理的。如果您需要有意地失败函数调用,只需返回一个被拒绝的承诺,不要像引用的示例代码现在所做的那样抛出。
如果有必要,可以使用Promise.reject()创建一个简单的拒绝承诺
return Promise.reject(new Error('fail'))https://stackoverflow.com/questions/64937797
复制相似问题