2016-02-02 72 views
0

我想重複循環,進行呼叫和保存所有promises.Here是我的代碼:

loadpages:function(id,pages){ 
var msg =[]; 
var finalList =[]; 
$q.all([ 
    for(var i=1;i<=pages;i++) 
     this.getPages(id,i).then(function(promise){ 
      msg[i]= promise.data; 
     }) 
    }), 
    ]).then(function() { 
    for(var j=1;j<=pageNo;j++){ 
     finalList.push(msg[j]); 
    } 
    }) 

    getPages:function(id,pageNo){ 
data.payload = { 
       id: id, 
       page: pageNo,    
      }; 
      var promise = $http.post(url,data); 
      return promise; 
     }, 
} 

我得到一個錯誤,當我在$ q.all中保留了一個for循環。如何獲得所有名單,遵守所有承諾併成爲最終決賽者?

回答

1

循環外部$ Q的,不是內 - 嘗試:

var promises = []; 
    for(var i=1;i<=pages;i++) { 
     promises.push(this.getPages(id,i).then(function(res){ 
      return res.data; 
     })) 
    } 
    $q.all(promises).then(function(answers) {.... 
+1

是啊...其他的方式也只是拋出錯誤 – charlietfl

+0

我用這個代碼,並得到了錯誤。你能提供給我更新一個 – hanu

+0

我得到這一個錯誤:[$ q:norslvr] http://errors.angularjs.org/1.3.14/$q/norslvr?p0=%5B%7B%22%24% 24state%22%3A ... 2status%22%3A0%7D%7D%2C%7B%22%24%24state%22%3A%7B%22status%22%3A0%7D%7D%5D – hanu