$q.all 和嵌套的 Promise

2023-11-25

有一个关于在 Angular 中使用 $q 时同步嵌套 Promise 的问题。 下面的代码能否确保等待整个 Promise 链?这意味着对返回承诺的服务的嵌套调用是否会在 $q.all 块中等待?

var call1 = service1.get('/someUr').then(function(){
  return service2.get('/someUrl2'); //returns promise
});

var call2 = service3.get('/someUr').then(function(){
  return 'hello';
});

var call3 = service4.get('/someUr').then(function(){
  return service3.get('/someUrl3');//returns promise
});

$q.all(call1,call2,call3).then(function(){
  console.log('All asynch operations are now completed');
});

基本上:当前代码是否有可能在所有嵌套的 Promise 得到解决之前执行 $q.all 的 then ?还是递归的?


是的,看起来凯文是正确的。我还创建了一个快速测试来确认该行为。

angular.module('myModule').controller('testController', function ($q,$scope) {

  function promiseCall(data,timeout) {
    var deferred = $q.defer();

    setTimeout(function() {
      deferred.resolve(data);
      console.log(data);
    }, timeout);

    return deferred.promise;
  }

  var a = promiseCall('call1 a',1000).then(function(){
    return promiseCall('call2 a',50);
  });

  var b = promiseCall('call1 b',500);

  var c = promiseCall('call1 c',1000).then(function(){
    return promiseCall('call2 c',50).then(function(){
      return promiseCall('call3 c',6000);
    });
  });

  $q.all([a,b,c]).then(function(res){
    console.log('all calls are done');
  });

});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

$q.all 和嵌套的 Promise 的相关文章

随机推荐

  • 在 Android 应用程序中显示日历

    如果有人能为我提供一个关于使用哪个组件的解决方案 以便我可以在我的 Android 应用程序中显示一个相当漂亮的日历 我将不胜感激 这两天我一直在寻找解决方案 但不幸的是找不到解决方案 由于这是一个非常基本的要求 我相信会有一个完美的解决方
  • C/C++ 编译器可以通过 pthread 库调用合法地将变量缓存在寄存器中吗?

    假设我们有以下代码 include
  • 为 PL/pgSQL 中实现的函数设置配置参数

    我在 PL pgSQL 中编写了几个函数 我想通过一些配置条目来控制它们的行为 这些配置条目也可以在运行时更改 每个会话 是否可以在中定义新的自定义配置条目postgresql conf 如果没有 解决办法是什么 作为我的搜索结果 我发现了
  • Python 多重处理 >= 125 列表永远不会完成

    我正在尝试实现这个多处理tutorial为了我自己的目的 起初我认为它的扩展性不好 但是当我做了一个可重现的示例时 我发现如果项目列表超过 124 它似乎永远不会返回答案 在x 124它在 0 4 秒内运行 但是当我将其设置为x 125它永
  • Python简单的音频生成器

    寻找一些 简单的 Python 音调生成器 用于在带有 USB 声卡的 raspi 上运行的以下脚本 需要动态音调开 关和频率改变 import serial time ser serial Serial dev ttyUSB0 9600
  • 使用 ggplot2 将 x 轴和 y 轴居中

    有没有办法像传统的图形计算器一样获取坐标轴 并将标签放在 ggplot2 图的中心 我浏览了文档 似乎没有这个功能 但其他绘图包不像 ggplot2 那样可以进行图形定制 为了澄清一下 我希望从这样的事情开始 To this 第一个图是用以
  • 如何在ios中获取twitter个人资料图片?

    我写了以下代码 NSURL url NSURL URLWithString http api twitter com 1 1 users show json NSDictionary params NSDictionary dictiona
  • ComboBox 下拉时如何捕获鼠标?

    我正在尝试对 ComboBox 下拉菜单 或与此相关的其他下拉菜单 包括上下文菜单 的行为进行建模 其中当您单击其他任何位置 甚至无法聚焦的内容 时 下拉菜单会关闭 我尝试过订阅 MouseCaptureChanged LostFocus
  • sed 替换部分字符串

    我想使用 sed 执行以下操作 case 1 here is some random text constant randomValue some more random text 我想在constant 之后直接替换randomvalue
  • 尝试从内部 Zip 文件(另一个 Zip 中的 Zip)获取流时出现“无法将其读取为 Zip 文件”异常

    在 C 中 我使用的是点网压缩我有一个名为 innerZip zip 的 zip 其中包含一些数据 另一个名为 outerZip zip 的 zip 包含了 innerZip 我为什么要这样做 好吧 在设置密码时 密码实际上适用于添加到存档
  • 使用 ArtistAnimation 在 matplotlib 中对 png 进行动画处理

    我一直在尝试使用有限元方法为二维热流问题创建一系列曲面图的动画 在每个时间步 我保存一个图而不是整个矩阵 以便更加高效 我遇到了麻烦FuncAnimation在 matplotlib animation 库中 所以我决定每次渲染一个曲面图
  • PHP 重命名数组的键

    如何重命名数组中的键 从这个名为 start array 的数组开始 0 gt date gt 2012 05 01 revenue gt 100 1 gt date gt 2012 05 02 revenue gt 200 并更改 日期
  • 为什么 Java 8 中的 Cloneable 没有默认的 clone()

    CloneableJava 本质上是破碎的 具体来说 我对接口的最大问题是它需要一种不定义方法本身的方法行为 所以如果遍历一个Cloneable列表中您必须使用反射来访问其定义的行为 然而 在 Java 8 中 我们现在有了默认方法 现在我
  • 使用 docker-entrypoint-initdb.d 脚本初始化 PostgreSQL 容器

    我正在尝试创建一个 PostgreSQL 11 5 docker 容器 在此过程中 我想运行一个 SQL 脚本来创建必要的用户 表等 但是 每当容器启动时 我都会看到以下错误 The files belonging to this data
  • Web api 路由和 http post [重复]

    这个问题在这里已经有答案了 我正在使用 WEB API 2 构建一个 API 我有以下 API 控制器 RoutePrefix api account public class AccountController ApiController
  • 如何在 AddModelError 消息中包含链接?

    我想添加一个 ModelState 错误 如下所示 ModelState AddModelError Some message a href controller action click here a 但是 该链接不会进行编码 因此会像文
  • emacs 完成或 IntelliSense 与 Visual Studio 上相同

    Linux 上的 emacs 22 2 1 我正在使用 emacs 进行一些 C C 编程 我想知道 emacs 是否支持补全 Visual Studio 中的 IntelliSense 例如 在填充结构时 我希望在键入点运算符或箭头运算符
  • 如何在netbeans中运行node.js文件?

    在net beans中 我安装了node js插件 但是我的简单节点程序无法工作 我收到错误 这是我的示例代码 var http require http http createServer function req res res wri
  • C/C++中Lua函数的引用

    我有一个函数嵌套在一组表中相对较深 C C 中有没有一种方法可以获取对该函数的 引用 并在需要使用它时将其 和参数 推送到堆栈上 这就是参考系统是为了 函数调用r luaL ref L LUA REGISTRYINDEX 将值存储在注册表中
  • $q.all 和嵌套的 Promise

    有一个关于在 Angular 中使用 q 时同步嵌套 Promise 的问题 下面的代码能否确保等待整个 Promise 链 这意味着对返回承诺的服务的嵌套调用是否会在 q all 块中等待 var call1 service1 get s