• Promise实例的any方法


    Promise.any()方法,该方法接受一组Promise实例作为参数,包装成一个新的Promise实例返回,只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态。如果所有参数实例都会变成rejected状态,包装实例就会变成rejected状态。

    Promise.any( )跟Promise.race( )方法很像,只有一点不同,就是不会因为某个Promise变成rejected状态而结束。

    const promises = [
      fetch('/endpoint-a').then(() => 'a'),
      fetch('/endpoint-b').then(() => 'b'),
      fetch('/endpoint-c').then(() => 'c'),
    ];
    
    try {
      const first = await Promise.any(promises);
      console.log(first);
    } catch (error) {
      console.log(error);
    }

         上边代码中,Promise.any( )方法的参数数组包含三个Promise操作,其中只要有一个变成fulfilled,Promise.any( )返回的Promise对象就变成fulfilled.如果所有三个操作都变成rejected,那么await命令就会抛出错误。

         Promise.any( )抛出的错误,不是一个一般的错误,而是一个AggregateError 实例。它相当于一个数组,每个成员对应一个被rejected的操作所抛出的错我。

    下面是个AggregateError的实现示例

    new AggregateError() extends Array -> AggregateError
    
    const err = new AggregateError();
    err.push(new Error("first error"));
    err.push(new Error("second error"));
    throw err;

     捕捉错误

    var resolved = Promise.resolve(42);
    var rejected = Promise.reject(-1);
    var alsoRejected = Promise.reject(Infinity);
    
    Promise.any([resolved, rejected, alsoRejected]).then(function (result) {
      console.log(result); // 42
    });
    
    Promise.any([rejected, alsoRejected]).catch(function (results) {
      console.log(results); // [-1, Infinity]
    });
  • 相关阅读:
    数据库的创建,数据的增删改查
    Ubuntu系统下查看显卡相关信息
    分布式文件系统测试方法与测试工具
    分布式存储产品的测试实践及心得
    sql注入
    web测试项目总结
    Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法
    Ubuntu系统下Jenkins的git构建基本方法
    Ubuntu系统下在github中新增库的方法
    ADO.NET复习总结(2)--连接池
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/14307805.html
Copyright © 2020-2023  润新知