28.自定义封装Promise-race()方法

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)}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值