如何等待所有数据成功回调的多个 Promise

2023-12-05

我有这个 API 调用,但我没有收到我的数据successCallback按照我发送的顺序。

    for (var i = 0; i < data.length; i++) {
      $http.post('/api/bla/blabla', $.param(data[i]))
        .then(successCallback, errorCallback);
     }

    var successCallback = function (response) {
       /*
       receive data in random order.
       assume its being send / handled so fast, thats its random
       which gets done first.
       */
    };

我可以以某种方式等待接收所有数据,然后将其重新排序为原始顺序吗?或者还有其他解决方案。


Use $q.all以正确的顺序获取所有数据。

var promiseArray = [];
for (var i = 0; i < data.length; i++) {
    var dataPromise = $http.post('/api/bla/blabla', $httpParamSerializer(data[i]))
        .then (function (response) {
             //return data for chaining
             return response.data;
        })
    ;
    promiseArray.push(dataPromise);
}

$q.all(promiseArray).then(function (dataArray) {
     //dataArray will be in original order
     //process results here
}).catch (function (errorResponse) {
     //log error
});

The promiseArray将以正确的顺序创建。即使各个 XHR POST 请求可能不会按原始顺序提供,$q服务将跟踪承诺并以正确的顺序填充数据数组(或解决第一个错误时被拒绝的问题)。

The JSFiddle 上的演示.

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

如何等待所有数据成功回调的多个 Promise 的相关文章

随机推荐

  • 如何使 LINQ 执行 (SQL) LIKE 范围搜索

    我非常需要帮助 我已经尝试这样做有一段时间了 所以我有这个查询 Select name from BlaBlaBla order by case when name like 9 then 1 end case when name like
  • Elasticbeanstalk 在单个 Python 实例上配置 HTTPS:模板中不允许使用 null 值

    我已经在 EB 单实例 环境中部署了一个 Flask 应用程序 并且运行良好 现在我尝试使用自签名证书将其配置为 https 来测试它 因此 我添加了一个配置文件 如 EB 开发人员指南中所示的 ebextensions 其中我有 2 个以
  • 使用 LWUIT 列出带有复选框的列表

    我正在使用 LWUIT 来获取搜索工具以在List 现在我想知道如何显示列表CheckBoxes list new List vector cform addComponent list cform addComponent t cform
  • 如何在HandlerInterceptor中读取请求体?

    我有 Spring Boot 我需要在数据库中记录用户操作 所以我编写了 HandlerInterceptor Component public class LogInterceptor implements HandlerIntercep
  • WPF:调度程序处理挂起错误,没有有用的堆栈跟踪

    我有一个已经运行了 10 多年的 WPF 应用程序 最近 我们在某些计算机上的一些部署启动时开始出现以下异常 主应用程序窗口将加载 并且可以加载一些数据 但随后会出现许多错误 System InvalidOperationException
  • Android:GPS 从精细到粗略的回退

    问候 有谁知道当我没有修复时如何获得粗略的 GPS 坐标 以及当我有修复时如何获得精细的 GPS 坐标 我尝试在谷歌上搜索一些示例代码 但没有成功 我确实找到了这个 http www android10 org index php arti
  • Gmail 应用程序脚本 API 中是否会添加一个函数来获取分配给邮件的星标类型?

    Gmail 设置允许设置不同类型的星标several 黄星 红星 绿勾 Gmail中可以设置可以使用的星号类型数量设置菜单 谷歌应用脚 本 s Gmail 服务包括一个Gmail消息 已加星标它只返回一个布尔值 它不提供所设置的星星的类型
  • python 中的 int('123') - 它是'int'类的函数调用还是构造函数调用?

    我正在学习Python 对Python的数据类型有点困惑 我一遍又一遍地读这句话 Python 中一切都是对象 这包括整数 浮点数 字符串 集合 列表等 当我们这样写时 1 2 3 所以我们实际上创建了一个对象list类 或不类 所以 当我
  • Ubuntu 远程连接 Mysql - 绑定地址失败

    我正在尝试配置我的服务器以允许远程连接 据我了解 我需要取消注释bind address 127 0 0 1 in the my cnf file 然后重新启动mysql 那没有用 我也尝试过将其更改为bind address 0 0 0
  • WordPress 中单个自定义帖子类型的多个 URL

    我有一个房地产代理房地产网站 其自定义帖子类型为 property 因此当前的 URL 结构是 property the address here 现在 在每处房产上 您都可以选择该房产是出售还是出租 我现在想保留单个自定义帖子类型 但单个
  • C# 中的按键事件——移动 PictureBox

    我试图通过按键事件上下移动 PictureBox picUser 我是 C 新手 可以通过 VB 来完成此操作 因此 我对以下代码的问题所在感到困惑 private void picUser keyDown object sender Sy
  • forkjoin 没有返回结果

    我正在使用 forkJoin 合并两个 firebase 请求的结果 两个请求均完成并记录在控制台中 但 forkJoin 本身的映射函数不会触发 因此不会向应用程序返回任何结果 public initGroup groupname use
  • 如何将选择选项值和文本存储在 JSON 对象或数组中?

    我有一个选择列表 示例如下 我想将此选择列表 文本和值 存储在 JSON 对象或数组对象中 这样我以后就可以使用 each 函数来完成它 然后我想根据用户输入显示 隐藏选择选项列表中的记录 所有代码都已准备就绪并可以工作 只是我无法弄清楚如
  • Java 中表达式“new String(...)”的用途是什么?

    在查看在线代码示例时 我有时会遇到通过使用 new 运算符将 String 常量分配给 String 对象的情况 例如 String s s new String Hello World 当然 这与 s Hello World 我不熟悉这种
  • 不同线程中的 Hibernate 断言失败

    我通过一个会话连接到我的数据库 我的整个计划中总是有相同的课程 我的线程 1 从数据库捕获主要数据 必须允许用户取消该线程 因此 如果用户频繁或快速按下取消按钮 这是我的解释 则会发生以下错误 ERROR org hibernate Ass
  • 对 Fortran 多线程程序进行计时

    我有一个调用多线程例程的 Fortran 90 程序 我想从调用例程中计时该程序 如果我使用cpu time 我最终得到的是所有线程 在我的例子中是 8 个 的 cpu time 加在一起 而不是程序运行所需的实际时间 这etime 例行公
  • 如何使用 C# 读取 Microsoft Edge 历史记录

    我想访问 Microsoft Edge 的历史记录 我该怎么办 根据我的研究 我们可以通过删除 LOCALAPPDATA Packages Microsoft MicrosoftEdge 8wekyb3d8bbwe AC 文件夹中以 开头的
  • 引导 Krippendorff 的 Alpha

    我想通过引导 Krippendorff 的 Alpha 结果来计算使用 R 包 irr 的 Krippendorff 的评级者可靠性 Alpha 系数的 95 置信区间 让我们使用 irr 包中的 C data from Krippendo
  • 提供程序在 InitState 中抛出错误。 Provider.of(上下文)

    如何在 initState 中访问 Provider 的上下文 我不断收到错误消息 flutter The following assertion was thrown building Builder flutter inheritFro
  • 如何等待所有数据成功回调的多个 Promise

    我有这个 API 调用 但我没有收到我的数据successCallback按照我发送的顺序 for var i 0 i lt data length i http post api bla blabla param data i then