javascript - 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 () {
});
}
解决方案
确保您确实创建了您的httpRequests
. downloadDoc
同样,您必须从方法返回承诺。所以在这里你可以使用$q.all
which 会等到所有的承诺完成。
服务
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() {
});
推荐阅读
- javascript - 我们可以直接在反应js渲染函数中使用boostrap类吗
- html - 如何设置div元素的css覆盖顶部
- rabbitmq - 为什么 ConfirmCallback#confirm#CorrelationData 只有一个属性 id 而不是整个消息,以便我可以立即重新发送消息
- java - 如何在 NetBeans 上放大/缩小视图设计
- java - 我尝试使用 Web 套接字将一些对象从 Java 服务器传输到有角度的网页
- windows - 在 Inno Setup 中重新安装和卸载时停止 Windows 服务
- java - maven 依赖项 - 哪个依赖项正在使用不需要的 jar?
- wcf - 为什么我无法访问托管在 Windows 服务中的 wcf?
- rasa - rasa init --no-prompt 抛出导入错误
- java - 如何管理 Firebase Firestore 中的可选值并避免数据库中的空字段?