2016-04-15 2 views
0

У меня есть несколько взаимно независимых $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(), любой неудачный вызов приведет всех вызовов не удалось. В моем случае все вызовы взаимно независимы. Все данные ответа на вызов будут помещены в scope.contact[]. Как я могу это сделать? Благодаря!

+0

Ну, если вы не хотите отправлять запросы в эту функцию, тогда не делайте этого и переместите этот код в функцию, которая должна отправлять запросы. Нет такой вещи, как «инициализация вызова». –

+0

@JBNizet Yup, я определенно могу это сделать. Мне просто интересно, есть ли способ использовать '$ q.all()' для этого. – NMSL

+0

Ах. Это не совсем ясно из вашего вопроса. Ответ Дж.К. дает возможность сделать это. –

ответ

1

Для использования $q.all() для этого просто обработайте неудавшиеся вызовы с уловом при каждом вызове. Затем разрешите обещание.

var promises = []; 

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

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

Теперь все обещания гарантированно решаются, и вы можете проверить, какие из них не удались.

+0

Спасибо! Я попробую это. Если это сработает, я вернусь, чтобы отметить это как ответ. Еще раз спасибо! – NMSL

Смежные вопросы