let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(111)
}, 1000)
})
let p2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(222)
}, 2000)
})
Promise.allSettled([p1, p2]).then(res => {
console.log(res)
})
myAllSettled([p1,p2]).then(res => {
console.log(res)
})
function myAllSettled(list) {
let len = list.length
let results = new Array(len)
let count = 0
return new Promise(resolve => {
list.forEach(p => {
p.then(res => {
let obj = {
status: 'fulfilled',
value: res
}
results.push(obj)
count++
if(count === len) {
resolve(results)
}
}, err => {
let obj = {
status: 'rejected',
reason: err
}
results.push(obj)
count++
if(count === len) {
resolve(results)
}
})
})
})
}