Skip to content

Promise.all异步并发的reject的问题

在执行异步并发Promise.all的时候,只要有一个reject那么返回的promise对象状态就是rejected,使用catch才能捕获。

解决方案

  • 1、在每个异步并发的实例中无论状态如何,都使用resolve。
  • 2、使用es2020(ES9)解决方案:Promise.allSettled
js
Promise.allSettled([
    Promise.reject({ code: 500, msg: '服务异常' }),
    Promise.resolve({ code: 200, list: [] }),
    Promise.resolve({ code: 200, list: [] })
]).then(res => {
    console.log(res)
/*
  0: {status: "rejected", reason: {…}}
  1: {status: "fulfilled", value: {…}}
  2: {status: "fulfilled", value: {…}}
*/
})