@hMartin

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

Добрый вечер!
Мне тяжко дается асинхронность, прошу помощи.

while (i<5) {
    method.call("get", data: "id", function(result) {
        id = id.concat(data.id);
    })
i++;
}

Мне что-то подсказывает, что это слишком просто и так делать нельзя, я прав? Если да, то как правильно сделать много запросов в цикле и закинуть все полученные данные в один массив (порядок не важен), зависимости между запросами нет.
  • Вопрос задан
  • 3024 просмотра
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
function getData(){
  var iterator = 0;
  function get(){
    method.call("get", data: "id", function(result) {
      id = id.concat(data.id);
      iterator++;
      if (iterator < 5) get();
    })
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rumkin
@rumkin
Именно так и делается. Либо берете библиотеку async и делаете асинхронный map.
Что вас смущает?

Да, так вы не узнаете когда закончится последний вызов, если оставите все как есть. Но ведь, не всегда необходимо знать какая операция завершилась последней (и завершилась ли).
Ответ написан
Ваш ответ на вопрос

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

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