Сериализованная обработка списка промисов

Последовательный await уже созданных Promise упорядочивает ожидание, но не их запуск: операции могли стартовать раньше. Для действительно последовательного запуска храните функции-фабрики.

Короткий ответ

Что ответить на собеседовании

Последовательный await уже созданных Promise упорядочивает ожидание, но не их запуск: операции могли стартовать раньше. Для действительно последовательного запуска храните функции-фабрики.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо пройтись по массиву промисов так, чтобы переход к следующему начался лишь после завершения текущего. Реализовать последовательный запуск при помощи цикла.

let promises = [promise1, promise2, promise3, ...rest];

// Выполняем все промисы один за другим

Ответ

Последовательный await уже созданных Promise упорядочивает ожидание, но не их запуск: операции могли стартовать раньше. Для действительно последовательного запуска храните функции-фабрики.

async function runSequentially(tasks) {
  const results = [];
  for (const task of tasks) results.push(await task());
  return results;
}
// tasks = [() => request1(), () => request2(), () => request3()]

Следующая фабрика вызывается только после успешного завершения предыдущей. Ошибка отклоняет общий Promise и прекращает запуск оставшихся задач. Если менять вход нельзя, for (const promise of promises) await promise лишь последовательно прочитает результаты; поздний rejected Promise может успеть вызвать предупреждение, пока код ждёт предыдущий.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее