如何检测AngularJS中完成的所有请求

时间:2015-05-12 18:44:06

标签: angularjs

所有

我想知道如何安排$ http请求订单并在所有请求完成后检测结束点,我想要做的是:

首先初始化一个获取json的请求,其中包含许多图像名称及其url,然后逐个(或一起)获取它们。准备好所有图像数据后,开始渲染页面以显示所有图像。

由于

2 个答案:

答案 0 :(得分:1)

$ http是一个承诺,你可以链接它们。 它看起来像这样:

$http.get('path').then(function (result){
    //do something with result
    return $http.get('path two');
}).then(function(result){
    //result is the resolve promise of $http.get('path two');
});

[编辑]

我认为我在你的案例中找到了更好的东西:$q.all

所以你可以迭代一个路径数组,创建promises,调用all并等待它们全部完成,我没有尝试但它应该看起来像:

var list = ['path', 'path two'];
var promises = [];
for (var i = list.length - 1; i >= 0; i--) {
  promises.push($http.get(list[i]));
}; 

$q.all(promises).then(function(results){
  //results is an array, ordered like the promises array
});

答案 1 :(得分:0)

如果你想确保没有请求通过,你可以使用它(对多个请求有用):

$rootScope.isLoading = function () {
    return $http.pendingRequests.length > 0;
};