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: {…}}
*/
})