Ниже приведены мои множественные вызовы ajax с обещаниями.Получить ответ нескольких отложенных объектов в jQuery
$(window).load(function(){
$.when(getApiModemList()).done(function(vendors){
var deferreds = calculateApiBalances(vendors);
$.when.apply($,deferreds).done(function(balance) {
console.log(balance);
console.log("All Done");
});
});
function getApiModemList(){
return $.getJSON("url");
}
function calculateApiBalances(vendors)
{
var defer=[];
$.each(vendors,function(k,v){
defer.push($.getJSON(someurl));
});
return defer;
}
});
Функция calculateApiBalances() возвращает мне некоторый баланс, который мне нужно суммировать, чтобы получить общее количество всех остатков. Но когда print console.log (balance) не предоставляет мне действительный массив баланса json. Еще одна проблема заключается в том, что если какой-либо из моих вызовов ajax в calculateApiBalances() терпит неудачу, он не печатает All Done. Что нужно сделать в приведенном выше коде для достижения этого.
Прежде всего, [избегать отложенного антипаттера] (http://stackoverflow.com/q/23803743/1048572)! – Bergi
Что должен содержать массив в случае ошибки? Обычно объединенное обещание просто отвергается. – Bergi
@ Bergi. Исправлена проблема с anitpattern. Я не забочусь о том, что какой-то аякс-вызов терпит неудачу. Мне нужно только учитывать баланс успешных вызовов ajax. Возможно ли это? – Vibhas