我有一个页面,它可以根据变量的长度发出不同数量的$http
请求,然后我想只在所有请求完成时才将数据发送到作用域。对于这个项目,我不想使用jQuery,所以请不要在您的答案中包括jQuery。目前,数据在每个请求完成时被发送到作用域,这不是我希望发生的事情。
以下是我到目前为止所拥有的部分代码。
for (var a = 0; a < subs.length; a++) {
$http.get(url).success(function (data) {
for (var i = 0; i < data.children.length; i++) {
rData[data.children.name] = data.children.age;
}
});
}
这是我怀疑的部分,因为有些东西需要作为$q.all()
的论据,但在Angular的文档中没有提到,我不确定它是什么意思。
$q.all().then(function () {
$scope.rData = rData;
});
谢谢你的帮助。
发布于 2014-05-29 19:13:48
$http
调用总是返回一个可与$q.all
函数一起使用的promise。
var one = $http.get(...);
var two = $http.get(...);
$q.all([one, two]).then(...);
可以在documentation中找到有关此行为的更多详细信息
all(promises)
promises -承诺的数组或散列。
在本例中,您需要创建一个数组,并在循环中将所有调用推入其中。这样,您就可以按照与上面示例相同的方式在数组上使用$q.all(…)
:
var arr = [];
for (var a = 0; a < subs.length; ++a) {
arr.push($http.get(url));
}
$q.all(arr).then(function (ret) {
// ret[0] contains the response of the first call
// ret[1] contains the second response
// etc.
});
https://stackoverflow.com/questions/23931846
复制相似问题