我有一个控制器,它通过两个单独的http调用加载我的数据的不同属性。一个过于简单的例子会是这样的:我应该如何在AngularJS中处理两个异步调用?
- 一个国家类有属性的名称,官方语言,人口
- 一个服务(A),它返回的国家和他们的语言
- 其他服务(B)它返回的国家和他们的人口
- 让我们假设在B返回的国家集合是在A返回的国家的一个子集,我不知道任何提前
- 我想最终与一个国家对象数组 - 由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可能首先返回,所以地图是空的。
我已经尝试通过“$ broadcast”/“$ on”功能使用承诺,但是这并不一致,因为这两个调用都是异步的(我在B完成时广播,并尝试将结果应用于A ,但有时A还没有完成)。
我应该在这里做什么?
第一的回调只是执行第二功能? – tymeJV