【发布时间】:2015-09-08 18:25:24
【问题描述】:
我有一个关于 AngularJS 中的异步数据调用的问题。
问题是我将从一个 API 调用中接收一个数组中的多个对象,并且我必须使用来自不同 API 调用的数据来扩展这些对象。
我正在考虑嵌套异步调用,但我的逻辑在如何与 $q 服务一起工作方面有点不足。我有一个服务将返回已通过第二次调用扩展的对象,因此我可以在控制器中使用它以在视图中显示。
第一个 API 调用返回一些参数,我需要这些参数用于第二个 API 调用,以便获取我将返回给控制器的相关数据。
我必须在第一个调用中循环,这样我才能在其中运行第二个 API 调用,但是我要如何将它返回给我的控制器呢?当第一个循环运行时,我无法解决,因为它会自行解释。
这样的解决方案是什么?
编辑,我的伪javascript问题:
returnListOfStuff().then(function (data) {
var result = data.Result;
for (var i = 0; i < result.length; i++) {
var dataForListItem = null;
returnDataForListItem(result[i].ID).then(function (data) {
dataForListItem = data;
});
for (prop in dataForListItem[0]) {
result[i].prop = dataForListItem[0][prop];
}
}
return result;
});
显然,这是行不通的,因为它只会从第一次调用returnListOfStuff() 中获取结果,因为在 for 循环中发生的事情还没有解决。我真的不知道如何使用$q.all() 执行此操作,因为我还没有来自returnListOfStuff 函数的参数
【问题讨论】:
-
没有你的代码很难判断你的问题是什么,但这听起来像是$q promise with loop的重复
-
@Bergi 添加了一些伪代码来更接近地描述问题...
标签: javascript angularjs asynchronous