javascript - Angular promise 队列并显示加载数据

标签 javascript angularjs

我正在使用 Angular 的 $q promise ,如下所示:

$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

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

如何保持加载标志设置直到所有 promise 都得到满足?

最佳答案

您可以使用$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);
})

关于javascript - Angular promise 队列并显示加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341330/

相关文章:

javascript - JS中如何将十进制转换为二进制?

javascript - 为什么 boolean 原语不调用原型(prototype) toString()?

javascript - 如何在 Javascript 方程中引用表单字段?

javascript - 特定网址的 Angular 路由

javascript - 如何在jquery数据表行添加功能中传递html

django - 如何使用 Django 和 AngularJS 创建 POST 请求(包括 CSRF token )

javascript - 设置附加到文本区域的字符串的顺序

javascript - $compile 不编译整个字符串

angularjs - 如何解决http状态码-1错误

javascript - jQuery-validate 不适用于 Kendo Button(包括 jsfiddle)