Promise.all和Promise.race

文章介绍了Promise.all和Promise.race在处理异步请求时的不同行为。Promise.all当所有promise都成功时返回一个包含所有结果的数组,若有任何一个失败则返回第一个失败的Promise。而Promise.race会立即返回第一个完成(无论成功或失败)的promise的结果。
摘要由CSDN通过智能技术生成

Promise.all返回结果是返回的第一个失败的Promise,如果所有都成功那么then函数中就会拿到一个数组,如果失败那么就会返回一个失败的Promise
Promise.race,谁最快我就抛出谁的Promise,不论成功失败。,Promise.race只返回失败跑的快的结果

<script>
  let p1 = Promise.resolve('成功1');
  let p2 = Promise.resolve('成功2');
  let p3 = Promise.reject('失败3');
  let pAll = Promise.all([p1, p2]);
  console.log('pAll', pAll); //返回结果是返回的第一个失败的Promise,如果所有都成功那么then函数中就会拿到一个数组,如果失败那么就会返回一个失败的Promise
  //   Promise.all应用场景比如有三个请求的结果同时需要展示在页面上,避免第一个请求回来了显示了然后第二个请求第三个请求仍然没有回来,页面不舒服的现象,那么此时我们就可以通过Promise.all去合并请求结果
  /*
  如果所有都成功那么就会返回一个数组,数组是所有成功的结果
  如果失败那么就返回失败的Promise结果 
  */

  const requestRace = () => {
    return new Promise((res, rej) => {
      setTimeout(() => {
        res('requestRace成功的请求回来了数据!')
      }, 1000);
    })
  }


  const requestRaceFail = () => {
    return new Promise((res, rej) => {
      setTimeout(() => {
        rej('请求超时,请尝试重新刷新页面!')
      }, 3000);
    })
  };

  const requestRaceFail4 = () => {
    return new Promise((res, rej) => {
      setTimeout(() => {
        res('请求超时,请尝试重新刷新页面4!')
      }, 1000);
    })
  };

  // 一般race方法是用来做计时器的判断的,判断接口是否超时。,谁最快我就抛出谁的Promise,不论成功失败。,Promise.race只返回失败跑的快的结果
  let pRace = Promise.race([requestRace(), requestRaceFail()]); //这个往往数组里面只允许传两个参数,一个是用来计时的设置多少秒算超时,如果超过秒数就返回超时。
  console.log('pRace', pRace);
  pRace.then(res => {
    console.log('res', res);
  }).catch(rej => {
    console.log('rej', rej);
  });

  let pRaceJJ = Promise.race([requestRaceFail4(), requestRaceFail()]);
  console.log('pRaceJJ', pRaceJJ);
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值