Dier_Sergio_Great
@Dier_Sergio_Great
Увлеченный человек

Как на jQuery выполнить функцию после нескольких AJAX запросов?

jQuery.when( jQuery .ajax(...), jQuery .ajax(...), jQuery .ajax(...), ... ).then(function(){/* тут код последней функции*/});

Как выполнить функцию после всех AJAX запросов?

Вначале есть только массив, в переборе для каждого элемента выполняется AJAX:

jQuery('ul > li').each(
      function(element){
            jQuery 
                   .ajax({/*... for element*/})
                   .done(function(data){/*...*/}); 
});

Количество LI элементов заранее не известно, поэтому выполнять функцию WHEN с определенным количеством аргументов нет возможности.
Как выполнить в конце функцию после AJAX запросов исключительно этих выполненных элементов?
  • Вопрос задан
  • 827 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Количество LI элементов заранее не известно, поэтому выполнять функцию WHEN с определенным количеством аргументов нет возможности.

Согласиться с подобным утверждением - вот с чем нет возможности:

$.when(...$('li').get().map(n => $.ajax())).then(/* выполняйте, чо там вам надо */);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
Добавь переменную счетчик равную количеству этих самых ajax запросов.
Типа
var _ajaxLoaded = $('ul > li').length;
создай в функцию типа
function checkLoaded(){
     if(--_ajaxLoaded <= 0){
         //все аяксы выполнены
     }else{
        //Осталось выполнить _ajaxLoaded аяксов...
      }
}

Ну и вызывай эту функцию в каждом done
....done(function(data){
/*...*/
checkLoaded();
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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