AngularJS $ q所有方法都提前执行

时间:2015-05-14 13:03:51

标签: javascript angularjs angularjs-scope angularjs-service

我正在使用一个角度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数组中。

非常感谢任何帮助。提前谢谢。

0 个答案:

没有答案