javascript - 我应该如何处理 AngularJS 中的两个异步调用?

标签 javascript angularjs asynchronous

我有一个 Controller ,它通过两个单独的 http 调用加载数据的不同属性。一个过于简化的例子是这样的:

  • 国家/地区类别,具有名称、官方语言和人口属性
  • 一项服务 (A) 返回国家/地区及其语言
  • 另一项返回国家及其人口的服务 (B)
  • 假设 B 中返回的国家/地区集是 A 中返回的国家/地区的子集,并且我提前不知道其中任何一个集
  • 我希望最终得到一组 Country 对象 - A 返回的所有国家/地区及其人口集(基于 B 返回的数据)

如果调用是同步的,我只需执行以下操作:

- call service A and store Objects in a map keyed by Country name
- call service B, iterate over results:  if a result in is the previous map, then update its population field

但是我当然不能这样做,因为对服务 B 的调用可能会先返回,所以 map 是空的。

我尝试通过“$broadcast”/“$on”功能使用 promise ,但这并不能一致工作,因为两个调用都是异步的(我在 B 完成时广播,并尝试将结果应用于 A,但有时A还没有完成)。

我应该在这里做什么?

最佳答案

关于javascript - 我应该如何处理 AngularJS 中的两个异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845568/

相关文章:

javascript - 更新 Meteor 用户配置文件中的购物车对象

javascript - 使用不记名 token 在 JavaScript 中加载图像

angularjs - $stateProvider 没有按预期加载页面

node.js - Nodejs异步函数原型(prototype)链错误

javascript - async/await 链何时停止?

java - Jersey 的多线程

javascript - 在使用 Javascript 或 HTML 提交之前修改输入值

javascript - 使用带有元素 id 的 onkeyup 函数从 Html 获取值到 jquery?

javascript - 基于类/命名空间的代码组织与 JavaScript/Node.js 相关吗?

javascript - 如何让 AngularJS 忽略 ajax OPTIONS 方法?