Promise.race() 方法返回一个 Promise,该 Promise 在传递的迭代器中的所有 Promise 之中,最先被决议的那一个的决议值。
下面是一个简单的实现:
const promiseRace =(promises) => {
return new Promise((resolve, reject) => {
for (const promise of promises) {
promise.then(resolve).catch(reject);
}
});
};
使用方法如下:
const promise1 =new Promise((resolve) => setTimeout(resolve, 100, 'one'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 1000, 'two'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 500, 'three'));
promiseRace([promise1, promise2, promise3]).then((res) => console.log(res));
// expected output: "three"
在上面的代码中,promiseRace() 函数接受一个包含多个 Promise 的数组,并返回一个新的 Promise。这个新的 Promise 会在传递的所有 Promise 之中最先被决议的那一个的决议值被解决。
注意,如果传递的所有 Promise 都被拒绝,则返回的 Promise 也会被拒绝。