Метод Done не работает при сбое одного из нескольких запросов Ajax - PullRequest
0 голосов
/ 01 декабря 2018

Я выхожу после нескольких вызовов 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

...