Angularjs 用于环路&;承诺
我在管理带有多个承诺的for循环时遇到一些问题。我已经读到我应该使用$q.all,但到目前为止我还没有成功。我需要这个函数来确保for循环中的所有异步调用都已发生Angularjs 用于环路&;承诺,angularjs,angularjs-service,Angularjs,Angularjs Service,我在管理带有多个承诺的for循环时遇到一些问题。我已经读到我应该使用$q.all,但到目前为止我还没有成功。我需要这个函数来确保for循环中的所有异步调用都已发生 refreshFeed: function(){ var defer = $q.defer(); var promises = []; // array of promises for (var x = 0; x < userdata.length; x++){ this.get
refreshFeed: function(){
var defer = $q.defer();
var promises = []; // array of promises
for (var x = 0; x < userdata.length; x++){
this.getLatest(x).then(function(){
promises.push(x);
});
}
console.log(userdata); // this is updated successfully by getLatest(x)
$q.all(promises).then(function(){
defer.resolve();
})
return defer;
}
更新:我使用了PSL的答案,并玩弄了getLatest,终于让它工作了。我只需要用函数参数替换userdata[x]。谢谢@PSL您需要通过一系列承诺,即使您使用延迟模式,您也无法解决任何问题。假设
getLatest
返回一个承诺,您可以这样做:-
refreshFeed: function(){
return $q.all(userdata.map(this.getLatest));
}
嘿,谢谢你的回复。我仍然得到一个错误,尽管我猜它与getLatest()有关。我已经按照您的回答设置了refreshFeed()。我收到错误“无法读取未定义的属性'searchterm'。我将用getLatest()代码更新这个问题
refreshFeed: function(){
return $q.all(userdata.map(this.getLatest));
}