Promise.race([ ]):
与Promise.all()对应,接受的也是个数组,里面也都是Promise实例。
Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回哪个结果,不管结果本身是成功状态还是失败状态。
1、只要有一个决议为成功或失败,新得到的Promise实例就相应地返回成功或失败。
2、all传空数组会立刻决议为成功;而race传空数组会被挂起,它会没有任何反应
function getData1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('第一条数据加载成功');
reject('err');
}, 500);
});
}
function getData2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('第二条数据加载成功');
resolve('data2');
}, 1000);
});
}
function getData3() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('第三条数据加载成功');
resolve('data3');
}, 1000);
});
}
let p = Promise.race([]);
p.then(data => {
console.log(data);
}, e => {
console.log(e);
})
/*
第一条数据加载成功
err
第二条数据加载成功
第三条数据加载成功
*/