嗨,我正在通过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 () {
});
}
答案 0 :(得分:1)
确保您确实创建了httpRequests
的promise数组的集合。同样,您必须从downloadDoc
方法返回promise。因此,在这里您可以使用$q.all
,它会等到所有的诺言完成。
服务
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() {
});
答案 1 :(得分:0)
您可以使用$q来运行异步函数并等待它们的响应,然后执行您想做的事情。
例如
$q.all(arrayOfHttpFunctions).then(responses => {
// Do your thing here
})
其中arrayOfHttpFunctions
是$ http请求对象的数组。