首页 > 解决方案 > AngularJS如何检查多个http请求是否完成并在所有响应完成后做某事

问题描述

嗨,我正在通过 for 循环发送 HTTP 请求,我想知道在所有响应到来后我该怎么做。

这是我的代码。

$scope.totalIdSet = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23...ect] total id count will be  more than 200

for (var k = 0; k < $scope.totalIdSet.length; k++) {

MydocumentsServices.downloadDoc($scope.totalIdSet[k], $scope.loggedUserInfo.access_token).then(function (res) {

                }, function () {

                });
            }

标签: javascriptangularjs

解决方案


确保您确实创建了您的httpRequests. downloadDoc同样,您必须从方法返回承诺。所以在这里你可以使用$q.allwhich 会等到所有的承诺完成。

服务

function downloadDoc (totalIdSet, access_token) {
   return $http.post('someurl', totalIdSet, {headers: {Authorization: access_token}})
} 

控制器

$scope.totalIdSet = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
var promises = []
for (var k = 0; k < $scope.totalIdSet.length; k++) {
    var promise = MydocumentsServices.downloadDoc($scope.totalIdSet[k], $scope.loggedUserInfo.access_token)
    promises.push(promise)
}
$q.all(promises).then(function(responses) {
  console.log(responses)

}, function() {

});

推荐阅读