我正在使用一个角度js应用程序,它会产生大量$http
个请求。我希望在所有$http
请求完成后执行一些操作。
所以我依赖AngularJS $q
服务。我正在使用$q
这样的
$q.all(promiseArray).then(function(){
//code to run after all services are completed.
})
此问题是$q
即使在所有承诺都添加到promiseArray
之前也已执行。我有一个非常冗长的复杂代码,它运行在forloop
中,并且在该循环中添加了promise。
代码示例
$q.all(ParentServiceArray).then(function() {
angular.forEach(tData, function(v,k) {
angular.forEach(v, function(value,key) {
if(value[0].xxx.results) {
angular.forEach(value[0].xxx.results, function(val,kk) {
childServiceArray.push(HTTP_SERVICE_CALL.then(function(response){
if(response.data.xx && response.data.xx == YYY){
//logic
} else {
//logic
}
}))
})
}
})
})
}
在所有服务调用之后运行的代码片段
$q.all(ParentServiceArray, ChildServiceArray).then(function() {
//Code to run after all services are completed
})
我认为问题是因为循环内部的重复foreach
循环和service
调用,即使在所有承诺添加到ChildServiceArray
之前,$q.all
也会执行
是否有解决此问题的解决方法?我希望这个$q
等到所有的promise都被添加到promise数组中。
非常感谢任何帮助。提前谢谢。