等待所有$ 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

回到顶部