Как дождаться выполнения асинхронного метода?

Всем привет!
Ситуация такая: есть массив объектов, есть модуль для nodejs, в котором реализованы только асинхронные версии методов. Нужно в цикле для каждого объекта в массиве выполнить асинхронный метод, но нужно получить результат выполнения метода для предыдущего элемента массива, чтоб решить, необходимо ли продолжать пробегать по элементам массива. В общем задача именно вовремя остановиться в цикле. Загвоздка только в том, что метод асинхронный, и колбек переданный ему дернется неизвестно когда. Цикл уже пробежит до конца и вызовет все для всех. Возможно ли синхронизовать выполнение этого метода??
  • Вопрос задан
  • 7931 просмотр
Решения вопроса 1
Я рекомендую использовать библиотеку ASYNC, а именно ее методы each и series
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Q

image.axd?picture=2012%2F12%2Fkindzadza.
Ответ написан
Комментировать
mlnkv
@mlnkv
JavaScript Developer
Ответ написан
Комментировать
undassa
@undassa
Last.Backend
Есть вариант использовать вместо обычного цикла - Array.pop().
Алгоритм следующий:

var a = [1,2,3];

var magic = function () {
  var i = a.pop();

  if(!i) return false;

  // some magic with i
  console.log(i);
  
  magic();
  return true;
}

magic();


Очень грубый пример, но жизнеспособный. Так же можно это обернуть в события и дергать события.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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