Я выхожу после нескольких вызовов Ajax подряд и делаю что-то еще, когда все запросы завершены.
Первый раунд работает нормально, потому что все запросы возвращают успех 200 .Однако во втором раунде не удается ввести метод done () здесь из-за того, что некоторые вызовы Ajax не отвечают (они дают 404).Предположим, что вызов ajaxCall (url5) завершился ошибкой, введя свою собственную функцию ошибки.
Но все же я хочу вызвать метод внутри метода done (), чтобы я мог использовать ответы, полученные от успешных вызовов.
Любые идеи, почему done () не работает, когда один из вызовов не удается ИЛИ как убедиться, что я могу быть в нужном месте, когда все вызовы сделаны независимо от их статуса: успех или ошибка?
function ajaxCall(endpoint){
return $.ajax({
url: endpoint,
cache: false,
error: function (xhr, ajaxOptions, thrownError) {
console.log("404");
},
success: function(response) {
result = $(response).find("#boxContent");
$(".boxContainer").append(result[0].innerHTML);
}
});
}
$.when(ajaxCall(url1),
ajaxCall(url2),
ajaxCall(url3),
ajaxCall(url4),
ajaxCall(url5)).then(function(){
console.log("All requests issued.");
}, function() {
console.log("One of the sources is not available*****************");
hasAnyFailed = true;
}).done(function( a1, a2, a3, a4, a5){
// When all calls return
console.log("DONE*********);
doSomethingElse();
});
PS: я нашел это SO-решение, но не совсем уверен, есть ли у нас решение для обновления, такое как встроенный метод JS.https://stackoverflow.com/a/7881733/2790804