我有一个角度承诺,它是通过从$ resource调用自定义api生成的,它返回一个id数组。我需要在每个id上调用另一个$ resource api,一旦加载了所有细节,我希望原始调用继续。
MyFactory.loadChildren(id).then(saveSuccess, saveFail);
MyFactory.loadChildren = function(id) {
return MyResource.children({
id: id
}).$promise
.then(function(response) {
_.each(response, function(c) {
MyResource.details({id:c.id}).$promise.then(function(child){
//do something with the child
},function(){
})
});
return //all the children details;
});
};
我想在加载所有子细节后执行saveSuccess。我怎么能这样做?
答案 0 :(得分:1)
您需要使用$ q.all。所以你的_.each将填充一个promises数组,你将调用$ q.all(thatArray)。 $ q.all(thatArray)中的函数将获得所有这些调用的结果数组,您可以执行then()来执行最终调用。 https://www.jonathanfielding.com/combining-promises-angular/