return new Promise((resolve,reject)=>{
resNum = 0
let resArr = []
list.forEach(item=> {
item.then(res=>{
resArr.push(res)
resNum ++
if (resNum === list.length) {
resolve(resArr)
}
})
});
})
}
myPromiseAll([p1,p2]).then(res=>{
console.log(res)
})
手写allSettled()
setTimeout(() => {
// resolve('1111')
reject('3333333')
}, 1000);
})
var p2 = new Promise((resolve,reject)=>{
setTimeout(() => {
resolve('2222')
}, 2000);
})
// Promise.all([p1,p2]).then((res)=>{
// console.log(res)
// })
function myPromiseAllSettled(list){
return new Promise((resolve,reject)=>{
resNum = 0
// let resArr = new Array(list.length)
let resArr = []
list.forEach((item,key)=> {
item.then(res=>{
let obj ={
status:'fullfilled',
value:res
}
resArr[key] = obj
resNum ++
if (resNum === list.length) {
resolve(resArr)
}
},err=>{
let obj ={
status:'rejected',
value:err
}
resArr[key] = obj
resNum ++
if (resNum === list.length) {
reject(resArr)
}
})
});
})
}
myPromiseAllSettled([p1,p2]).then(res=>{
console.log(res)
})