Как знать, когда все вызовы ajax завершены

74
задан PhD 5 October 2015 в 17:31
поделиться

1 ответ

Простой способ

самый легкий путь состоит в том, чтобы использовать .ajaxStop() обработчик событий :

$(document).ajaxStop(function() {
  // place code to be executed on completion of last outstanding ajax call here
});

твердый путь

можно также вручную обнаружить, если какой-либо вызов ajax все еще активен:

Создают переменное, содержащее количество активных соединений Ajax:

var activeAjaxConnections = 0;

прежде, чем открыть новый инкремент соединения Ajax, что переменная

$.ajax({
  beforeSend: function(xhr) {
    activeAjaxConnections++;
  },
  url (...)

в success проверка части, если та переменная равняется нулю (если так, последнее соединение закончилось)

success: function(html){
  activeAjaxConnections--;
  $('#result_'+rowNum).empty().append(html);
  $('#coda_'+rowNum).removeClass("loading");
  $('#coda_'+rowNum).addClass("loader");
  if (0 == activeAjaxConnections) {
    // this was the last Ajax connection, do the thing
  }
},
error: function(xhr, errDesc, exception) {
  activeAjaxConnections--;
  if (0 == activeAjaxConnections) {
    // this was the last Ajax connection, do the thing
  }
}

, Как Вы видите, я добавил также проверку возврат с ошибкой

131
ответ дан Tomasz Tybulewicz 24 November 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: