【发布时间】:2021-04-28 10:18:05
【问题描述】:
我有多个返回 Promise 的函数。如果出现错误,他们会使用reject。但我想处理 Promise.all() 调用的 catch 块中的错误。但是在运行时会导致Unhandled promise rejection。
function errorFunc() {
return new Promise((_, reject) {
reject('rejected in errorFunc')
})
}
Promise.all([
errorFunc(),
]).catch(reasons => {
//throw new Error('an error occured', reasons)
console.log('an error occured')
})
如您所见,console.log 工作正常,但在抛出异常时运行失败。
我已经阅读了多篇关于未处理的承诺拒绝的文章和主题,但我还没有找到解决该问题的方法。
这是 JSFiddle 上的失败代码:https://jsfiddle.net/qkptbjnz/1/
我该如何解决这个问题?或者您对更好的错误处理有什么建议?
编辑我想在这里实现某种验证:https://jsfiddle.net/89d5nLcw/
【问题讨论】:
-
您的目标是什么?您可以处理
catch中的错误,这是预期的方式。无需重新抛出错误 -
@JensV 我有一个“validateObject”函数,它异步调用多个其他验证函数。当一切都完成后,如果其中一个失败,我想抛出一个异常。
-
@JensV jsfiddle.net/89d5nLcw 这个主意不错
-
它就像
try/catch一样工作:当你重新throw来自catch块的异常时,你将不得不在其他地方再次捕获它,或者你的程序崩溃。
标签: javascript node.js typescript promise