使用$ q.all()发送多个相互独立的$ http调用

时间:2016-04-15 20:35:04

标签: angularjs

我需要进行多次相互独立的doc object调用。

$http

angular.forEach(carrierDetails, function(carrierDetail) { (function(carrierId) { CarrierService.getContact(carrierId).then(function(response) { scope.contact[carrierId.toString()] = response.data.carrierOwners; }); })(carrierDetail.carrierId); }); 无效,因为在$q.all()中,任何失败的通话都会导致所有通话失败。就我而言,所有呼叫都是相互独立的。每个呼叫响应数据都将被推送到$q.all()。我怎样才能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

要使用$q.all(),只需在每次调用时使用catch来处理失败的调用。然后解决这个承诺。

var promises = [];

promises.push(doSomethingAsynchronous()
    .then(function (response) {
        return {response: response};
    })
    .catch(function (response) {
        return {failed: true, response: response};
    })
);

$q.all(promises).then(doSomething);

现在所有承诺都可以保证解决,您可以检查哪些承诺失败。