等待$ http结束执行$ q.all

时间:2017-10-22 17:22:01

标签: angularjs

在下面的代码中,我根据变量x将函数添加到promises数组中。在最后一个条件中,我需要在$ http响应之后添加该函数。这段代码是否正确? $q.all中所有promise的执行是否会等到$http函数返回响应?

var promises = [];

array.forEach(function(x){

    if (x==1)
        promises.push(function1('aaa'));
    else if (x==2)
        promises.push(function2('bbb'));
    else {
          $http.get("url.htm").then(function(response) {
              promises.push(function3(response));
          });
    }
});

$q.all(promises).then(function(resultArray) { 
   // .....
}

1 个答案:

答案 0 :(得分:1)

它不会等待AJAX​​响应,因为它是异步的。

目前还不清楚funciton1& function2 return(promises?),但它应该更像是

var promises = [];

array.forEach(function(x){

    if (x===1)
        promises.push(function1('aaa'));
    else if (x===2)
        promises.push(function2('bbb'));
    else {
          promises.push($http.get("url.htm"))
    }
});

$q.all(promises).then(function(resultArray) { 
   // .....
}