Promise.race 功能描述
Promise.race 函数返回一个 Promise 实例
Promise.race 将返回第一个完成的 Promise 实例,如果最快的 Promise 成功,则 Promise.race 就成功,如果最快的 Promise 失败,则 Promise.race 就失败。
Promise.race 手写代码实现
function myPromiseRace(promises){
return new Promise(function(resolve, reject){
for(const promise of promises){
Promise.resolve(promise).then(resolve, reject);
}
});
}
测试
const p1 = new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('p1 延时一秒')
}, 1000);
});
const p2 = new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('p2 延时两秒')
}, 2000);
});
myPromiseRace([p1,p2]).then(res=>console.log(res)).catch(err=>console.log(err));
const p1 = new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('p1 延时一秒')
}, 1000);
});
const p2 = new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('p2 延时两秒')
}, 2000);
});
const p3 = new Promise((resolve, reject)=>{
setTimeout(()=>{
reject('p3 rejected 延时500ms')
}, 500);
});
myPromiseRace([p1,p2,p3]).then(res=>console.log(res)).catch(err=>console.log(err));