Promise.race() 方法: (promises) => {}
-
promises: 包含了 n 个 promise 的数组
-
返回一个新的 Promise 对象,第一个完成的 promise 的结果状态就是最终的结果状态
// 是构造函数的方法,不是实例的方法,所以不要加 prototype
Promise.race = function (promises) {
// 1.返回一个 Promise 对象
return new Promise((resolve, reject) => {
// 2.promises 中谁先成功就返回谁的结果值,状态为成功
// 3.遍历 promises
for (let i = 0; i < promises.length; i++) {
promises[i].then(v => {
resolve(v)
}, r => {
reject(r)
})
}
})
}
示例
const p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("ok");
}, 1000);
});
const p2 = Promise.resolve("success");
const p3 = Promise.resolve("oh ok");
let result = Promise.race([p, p2, p3]);
console.log(result); // Promise {PromiseState: 'resolved', PromiseResult: 'success', callbacks: Array(0)}