面试官:Promise.all即使有一个reject但返回全部结果。

194 阅读1分钟

本来有原生API---allSettled,但直接写这个还有什么意思嘞。
可以给Promise数组map遍历一下.

//解决Promise.all中有reject后续不执行的情况 还可以使用Promise.allSettled
let p1 = new Promise(res => {
    res('p1');
})

let p2 = new Promise(res => {
    res('p2')
})

let p3 = new Promise((res, rej) => {
    rej('p3rtyret')
})

//1.
Promise.all([p1, p2, p3].map(p => p.catch(e => e)))
    .then(val => {
        console.log(val);
    })
    .catch(err => {
        console.log(err);
    })
    
//2.
Promise.allSettled([p1, p2, p3])
    .then(res => {
        console.log(res);
    })
    .catch(err => {
        console.log(err);
    })

记录记录!