promise.all, promise.race, promise.any, promise.allSettled
const req = (t, res) => new Promise((resolve, reject) => {
setTimeout(() => {
console.log('req end ' + t)
if(res) {
resolve(t)
} else {
reject(false)
}
}, t)
})
let ary = [req(1000, 1),req(100, 0),req(300, 1)]
async function test() {
let res
// res = await Promise.all(ary) // 取所有,必须全部成功。其中一个失败全失败。&&
// res = await Promise.race(ary) // 取第一个,必须全部成功。&& & one
// res = await Promise.any(ary) // 取一个成功就行,其他的不要。||
res = await Promise.allSettled(ary) // 不管成功与否,把状态和返回值全部返回,交给开发自己判断。
console.log(res)
/*
[
{ status: 'fulfilled', value: 1000 },
{ status: 'rejected', reason: false },
{ status: 'fulfilled', value: 300 }
]
*/
}
test().catch(e=>{})