【发布时间】:2015-12-24 00:06:23
【问题描述】:
我正在尝试进行多次$http 调用,我的代码如下所示:
var data = ["data1","data2","data3"..."data10"];
for(var i=0;i<data.length;i++){
$http.get("http://example.com/"+data[i]).success(function(data){
console.log("success");
}).error(function(){
console.log("error");
});
}
我怎样才能保证知道所有$http 呼叫是否成功?如果其中任何一个失败,将执行一些操作。
【问题讨论】:
-
您可能想查看
$q服务,特别是$q.all。 -
@CollinD 我在
$q.all上做了我自己非常简单的实验。但它只有在所有请求都成功时才会触发。如果一个失败了,什么都不会发生。 -
如果失败了,什么都不会发生 - 在这种情况下你使用 .all 错误
-
@user1995781 发生这种情况的原因是因为这是
all的预期行为。如果即使子 Promise 被拒绝,您也希望聚合 Promise 得到解决,您需要考虑使用allSettled。不幸的是,这个方法不在 Angular 的$q库中,但它在 Promises 的大牌库中,比如 Bluebird。
标签: javascript angularjs promise angular-promise