race: 竞技/竞赛
Promise.race() 接受多个Promise对象 数组形式传递参数
只要有一个Promise状态改变, 那么就结束
以先拿到结果Promise值作为整个值返回
如果最先返回的值状态是fulfilled,那就进入then中结束
如果最先返回的值状态是rejected,那就进入catch中结束
全部fulfilled状态
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(11111)
}, 3000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(22222) //最先结束,成为结果
}, 500);
})
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(33333)
}, 1000);
})
Promise.race([p1, p2, p3]).then(res => {
console.log("res:", res) //res: 22222
}).catch(err => {
console.log("err:", err)
})
有rejected状态时
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(11111)
}, 3000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(22222) // 错误状态,成为结果
}, 500);
})
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(33333)
}, 1000);
})
// race: 竞技/竞赛
// 只要有一个Promise变成fulfilled状态, 那么就结束
Promise.race([p1, p2, p3]).then(res => {
console.log("res:", res)
}).catch(err => {
console.log("err:", err) //err: 22222
})