Promise.race() 方法返回一个 Promise,该 Promise 在给定的若干个 Promise 对象中的最快完成的那一个完成(resolve 或 reject)。
下面是一个简单的实现示例:
function promiseRace(promises) {
return new Promise((resolve, reject) => {
for (let i = 0; i < promises.length; i++) {
promises[i].then(resolve, reject);
}
});
}
该函数接受一个包含若干个 Promise 对象的数组作为参数,并返回一个新的 Promise 对象。
它使用循环遍历数组中的所有 Promise 对象,并为每个对象添加 then
方法的回调函数。如果任何一个 Promise 对象完成(resolve 或 reject),就会调用新的 Promise 对象的 resolve 或 reject 方法。
使用示例:
const promise1 =new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
promiseRace([promise1, promise2]).then((value) => {
console.log(value);
// expected output: "two"
});
在上面的示例中,promise2
最先完成,所以输出的值为 "two"。