Promise.all
所有元素状态都为resolve时就返回整个数组(fullfiled),有一个为rejected就返回那一个rejected的对象
function myAll(promises){
return new Promise(
let res = []
let count = 0
promises.forEach((item, i) => {
item.then(
value => {
res[i] = value
count ++
if(count == promises.length){
resolve(res)
},
err => reject(err)
})
})
)
}
Promise.any
有一个元素状态为resolve就直接返回那一个resolve对象,全为rejected则返回整个数组(rejected)
function myAny(promises){
return new Promise(
let res = []
let count = 0
promises.forEach((item, i) => {
item.then(
value => resolve(value),
err => {
res[i] = err
count ++
if(count == promises.length){
reject(res)
}
)
})
)
}
Promise.allSettled
数组中所有元素状态都发生变更时,返回整个数组(fullfiled)
function myAllSettled(promises){
return new Promise(
let res = []
let count = 0
promises.forEach((item, i) => {
item.then(
value => res[i] = value,
err => res[i] = err
).finally(() => {
count ++
if(count == promises.length){
resolve(res)
}
})
})
)
}