frontEnd_book icon indicating copy to clipboard operation
frontEnd_book copied to clipboard

设计并实现 Promise.race()

Open hanyueqiang opened this issue 4 years ago • 0 comments

返回一个 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))

hanyueqiang avatar Dec 29 '20 05:12 hanyueqiang