zoukankan      html  css  js  c++  java
  • Promise实例的race方法

    Promise.race( )方法同样是将多个Promise实例,包装成一个新的Promise实例。与Promise.all不同的是,多个Promise实例,只要有一个率先改变,race方法就跟着改变,并返回那个率先改变的Promise实例的返回值,传递给回调函数。

    const p = Promise.race([p1, p2, p3]);

          上面代码中,只要p1p2p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。

    Promise.race( )方法的参数与Promise.all( )方法一样,如果不是Promise实例,就会先调用下面讲到的Promise.resolve()方法,将参数转为Promise实例,再进一步处理。

    下面是一个例子,如果指定时间内没有获得结果,就将Promise的状态变为reject,否则变为resolve

    const p = Promise.race([
      fetch('/resource-that-may-take-a-while'),
      new Promise(function (resolve, reject) {
        setTimeout(() => reject(new Error('request timeout')), 5000)
      })
    ]);
    
    p
    .then(console.log)
    .catch(console.error);

         上边代码中,如果5s内fetch方法无返回结果,变量p的状态就会变为rejected,从而触发catch方法指定的回调函数。

  • 相关阅读:
    关于JDK 安装,以及Java环境的设置
    DHCP snooping
    解除破解正版Kindle电子书籍的版权限制
    广东地区电信官方DNS服务器
    Bash脚本15分钟进阶指导
    视听说英语
    华中师大2013新生群
    【强网杯2018】Gamebox
    【强网杯2018】逆向hide
    【Wechall.net挑战】Anderson Application Auditing
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/14306265.html
Copyright © 2011-2022 走看看