This article遍历单个诺言组合器:
但是我看不到的是一种运行所有承诺的方法,但是当一个单独的承诺被拒绝时不会短路。如何确保所有承诺均得到兑现,但我可以处理所有拒绝及其解决方案?
答案 0 :(得分:4)
您可以在各个承诺中添加catch
,以指示您希望错误如何出现在最终结果中。因为catch
返回了一个保证,所以当您运行Promise.all
时,您将能够得到错误作为结果。例如:
// some promises:
let p = [
Promise.resolve("val1"),
Promise.reject("some error"),
Promise.resolve("val3")
]
let results = Promise.all(p.map(pr =>
pr
.then(v=> "value: " + v)
.catch(e => "error: " + e))) // add catch to prevent errors from stopping all()
results.then(console.log)