Задать вопрос
@alexeilavrov

Почему путаются данные в цепочке ajax-запросов?

https://jsfiddle.net/alexeilavrov/vjd0cxho/8/

Скрипт циклом перебирает ссылки в блоке и должен для каждой узнать сколько есть комментариев. Вроде бы всё работает, но не работает.

При вызове цепи $.ajax().then().then() данные переходят на следующий этап, но почему-то между собой путаются. При каждом вызове скрипта в консоли разное количество результатов с разными данными.

Как правильно надо писать такие штуки? Спасибо.
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@vaajnur
битриксоид
все дело в асинхронности
Ответ написан
Комментировать
@cppjunkie
Если важно выводить в каком-то порядке, то просто сохраняйте результаты где-нибудь и когда все выполнится выводите их в каком надо порядке. Например, в объектике, где ключ - это индекс, а значение - это результат операции. А при текущем подходя порядок не гарантирован, как уже сказали.

Если важно именно выполнять запросы по порядку, т.е. последовательно от 1 до N, то можно объединить их в цепочку из промисов. Вроде такого:

var promise = $.Deferred().promise();

$('ul.article-list > li').each(function(key, item) {
    promise = promise.then(function() {
        getSumComments($(item).children('a').attr('href'),$(item));
    });
    // console.log(item);
});

promise.then(function() {
    console.log('All done');
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 16:03
45000 руб./за проект
18 дек. 2024, в 15:58
5000 руб./за проект