当前位置: 首页 > 面试题库 >

当某些调用工作而另一些调用失败时,$ q.all()会发生什么?

秋阳旭
2023-03-14
问题内容

当某些调用工作而另一些调用失败时,$ q.all()会发生什么?

我有以下代码:

    var entityIdColumn = $scope.entityType.toLowerCase() + 'Id';
    var requests = $scope.grid.data
      .filter(function (rowData, i) {
          return !angular.equals(rowData, $scope.grid.backup[i]);
      })
      .map(function (rowData, i) {
          var entityId = rowData[entityIdColumn];
          return $http.put('/api/' + $scope.entityType + '/' + entityId, rowData);
      });
    $q.all(requests).then(function (allResponses) {
        //if all the requests succeeded, this will be called, and $q.all will get an
        //array of all their responses.
        console.log(allResponses[0].data);
    }, function (error) {
        //This will be called if $q.all finds any of the requests erroring.
        var abc = error;
        var def = 99;
    });

当所有$ http调用都工作时,则allResponses数组将填充数据。

当我失败时,据我了解,第二个函数将被调用,并且错误变量将给出详细信息。

但是,有人可以帮我解释一下,如果某些响应有效而其他响应失败了怎么办?


问题答案:

我相信,由于Promise库是基于Q实现的,因此,一旦第一个Promise被拒绝,就会以错误调用reject回调。它不等待其他承诺解决。请参阅Q
https://github.com/kriskowal/q的文档。对于Q.All这就是所提到的

all函数返回一个值数组的promise。兑现承诺后,数组将以与那些承诺相同的顺序包含原始承诺的实现值。如果给定的承诺之一被拒绝,则返回的承诺将立即被拒绝,而无需等待其余批次。



 类似资料:
  • Kafka 服务器和客户端 JAR 移至最新库:0.10.0.1 我的消费者和生产者代码使用如上所述的最新kafka jars,但仍然使用旧的消费者API(0 . 8 . 2)。 我在调用commit offset时在消费者端遇到问题。 kafka服务器端配置: 以下 Kafka 消费者的配置: 要创建消费者,我使用以下api: 和提交调用 在从 Kafka 读取消息时,我们使用以下方法来处理超时

  • 问题内容: 我一直都在看:声明的对象常量使某些键用引号引起来,而另一些则没有。jQuery 1.4.2中的示例: **用引号 将前两个属性键(和 ) 包裹 起来,而其他两个都不用引号引起来的意义是什么? 有什么区别吗? 我一直在摸索ECMAScript 5规范;我所能找到的只是[ 15.12.3节的注6,重点是我的 ]: 注6:一个对象呈现为左括号,后跟零个或多个属性,以逗号分隔,右括号封闭。 属

  • 问题内容: 在某个线程上调用an 时,该线程会发生什么? 问题答案: 目标线程是“中断的”。通常,在该线程中设置一个标志,该线程可以查看该标志(带有)。如果目标线程当前在某些I / O上被阻塞,则分别使用an 或an 唤醒它。 线程中断是微调线程的一种温和方法。它是用来给线程有机会退出 干净 ,而不是,这更像是一支突击步枪射击的线程。

  • 我试图用Javaflow(http://commons.apache.org/sandbox/commons-javaflow/)和OW2 ASM库(http://ASM.OW2.org/)来测试java类。我设置了javaagent并使用instrumentation.addTransformer()在加载时将我的transformer注册到instrument类。在transformer内部,

  • 我正在运行一个SpringBoot应用程序,我有一个控制器,它定义Rest Api并通过ID列表接受请求。通常情况下,它工作正常,但如果ID的数量变大,那么我会收到http 503。有趣的是,我看不到控制器也收到我的请求的任何日志。因此,我无法理解正在发生的事情。你知道什么值得检查吗?

  • 我对JSF有一个非常奇怪的问题,但我不能自己解决它,因为没有错误消息我可以谷歌搜索。问题是,我有一个视图提交一个新的文章或更新一个现有的文章。 方法getArticle()返回-if?id=x是通过url设置的-id为x的文章POJO。否则,一个纯粹的空的新文章。根据设置的id,模式editArticle被设置为true或false。 我使用了BalusC的检查表(在JSF中没有调用action方