Promise.allSettled = promises => {
if(Array.isArray(promises)) {
throw Error('must Array')
}
return new Promise((resolve) => {
let count = 0, len = promises.length,data=[];
for(let i=0;i<len;i++){
Promise.resolve(i).then(res=> {
data[i] = {
status:'fulfilled',
value: res
}
},err=> {
data[i] = {
status:'rejected',
reason: err
}
})
.finally(()=> {
if(++count === len){
resolve(data)
}
})
}
})
}