角度承诺队列并显示加载数据

时间:2014-03-12 03:18:02

标签: javascript angularjs

我正在使用有角度的$q承诺:

$scope.loadingData = true; // show loading spinner in view 
var thingsToProcess = [....];

for(int i = 0; i < thingsToProcess.length; i++) {
    var itemToProcess = thingsToProcess[i];

    makeServiceCallThatReturnsPromise(itemToProcess)
        .then(function(response) {
                   processAndDisplayResponse(response);
         });
}

$loadingData = false; // hide loading spinner

由于服务调用promises排队,因此在从服务返回所有数据之前,加载指示符消失。

如何设置加载标志,直到所有承诺都被提供?

2 个答案:

答案 0 :(得分:3)

你可以在这里使用$q.all(),

var promises=[];
for(int i=0; i<thingsToProcess.length; i++) {
    var itemToProcess = thingsToProcess[i];

  promises.push(  makeServiceCallThatReturnsPromise(itemToProcess)
        .then(function(response) {
                 //do some work here ?
         }));



}

$q.all(promises).then(function(){
  processAndDisplayResponse(response);
})

答案 1 :(得分:2)

您可以使用$ q.all()。