gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Как сделать цепочку из десятков запросов без рекурсии?

Задача сделать чтобы выполнялось 10 запросов, когда они все - еще 10, когда те все - еще 10 и тд
while (data.length) {
    var slice = data.splice(0, 10);
    
    var ds = [];
    slice.forEach(function (v) {
      ds.push($.ajax({
        'url': 'index.php?action=getzip'
        'type': 'POST',
        'data': {
          'country': v.country,
          'city': v.city,
        },
        'dataType': 'JSON',
      }));
    });

    $.when.apply(null, ds).then(function() {
      // recursion may be here or...?
    });
  }
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
Вам не нужна рекурсия, достаточно обойтись циклом.
Пример:
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const chunks = 3;

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

let promise = Promise.resolve();

for (let i = 0; i < data.length; i += chunks) {
  const slice = data.slice(i, i + chunks);

  promise = promise.then(() => Promise.all(
    slice.map(() => console.log(i))
  ));
}

promise.then(() => console.log('all done'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fnnzzz
@fnnzzz
front-end dev
проще заюзать Promise, у него есть метод Promise.all, который передаст управление в следующий then только тогда, как отработают все N-вызовов к API
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы