等待所有$ http请求在Angular JS中完成
我有一个页面,$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;
});
谢谢你的帮助。
回答:
$http
调用总是返回一个可以与$q.all
函数一起使用的promise 。
var one = $http.get(...);var two = $http.get(...);
$q.all([one, two]).then(...);
您可以在文档中找到有关此行为的更多详细信息:
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.
});
以上是 等待所有$ http请求在Angular JS中完成 的全部内容, 来源链接: utcz.com/qa/409249.html