frontEnd_book
frontEnd_book copied to clipboard
设计并实现 Promise.race()
返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝
const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
const newRace = (promiseArr) => {
return new Promise((resolve, reject) => {
promiseArr.forEach(item => {
Promise.resolve(item).then(res => resolve(res)).catch(e => reject(e))
})
})
}
newRace([promise1, promise2]).then((value) => {
console.log(value);
// Both resolve, but promise2 is faster
}).catch(e => console.log('err', e))