Promise.any() 接受多个Promise对象 数组形式传递参数
会等到有一个Promise变成fulfilled状态,才结束,进入 then
如果Promise状态全部是rejected,都结束后进入 catch
进入 catch 会抛出错误信息
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1111) //第一个fulfilled状态,成为结果
}, 1000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(22222) //最先改变状态rejected 但不是fulfilled状态
}, 500);
})
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(3333)
}, 3000);
})
Promise.any([p1, p2, p3]).then(res => {
console.log("res:", res) //第一个fulfilled状态,成为结果 res: 1111
}).catch(err => {
console.log("err:", err)
})
如果Promise状态全部是rejected,都结束后进入 catch
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(1111)
}, 1000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(22222)
}, 500);
})
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(3333)
}, 3000);
})
Promise.any([p1, p2, p3]).then(res => {
console.log("res:", res)
}).catch(err => {
// Promise都是rejected状态时
console.log("err:", err) //err: AggregateError: All promises were rejected
// console.log("err:", err.errors) //err: (3) [1111, 22222, 3333]
})