我有以下Ajax调用:
for (var i=0;i<localStorage.length;i++){
stored = localStorage.getItem(i.toString());
id=stored.split(':');
if ( id[0].toString()=="legislator" ){
bioguide_id=id[1];
$http({
method: 'GET',
url: 'getData.php',
params: {fav_legislator_value: bioguide_id}
}).then(function (response) {
fav_legislators.push(response.data.results[0]);})
}
}
我需要完成所有Ajax调用,并且所有结果都被推送到数组之后,只有我可以再次开始处理。我已经尝试了许多方法,使这个功能,但没有任何作用。我的整个脚本被执行然后将值推送到对我来说没用的数组。如何等待所有调用完成并且数组已完全填充。
答案 0 :(得分:1)
将所有promises对象存储到一个数组中,并使用$q.all将所有承诺合并为一个承诺,只有在所有承诺都已解决后才会解决。
<强> E.g。强>
var promises = [];
for (var i=0;i<localStorage.length;i++){
stored = localStorage.getItem(i.toString());
id=stored.split(':');
if ( id[0].toString()=="legislator" ){
bioguide_id=id[1];
var req = $http({
method: 'GET',
url: 'getData.php',
params: {fav_legislator_value: bioguide_id}
}).then(function (response) {
fav_legislators.push(response.data.results[0]);
});
promises.push(req);
}
}
$q.all(promises).then(function () {
// All result is now in `fav_legislators`.
})