Мониторинг завершения массива Promise

Используйте Promise.allSettled: он ждёт завершения всех элементов независимо от успеха или ошибки. После ожидания выведите 'all done'.

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

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

Используйте Promise.allSettled: он ждёт завершения всех элементов независимо от успеха или ошибки. После ожидания выведите 'all done'.

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

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

Условие

Реализуйте функцию, принимающую массив объектов Promise и выводящую в консоль сообщение "all done" после того, как каждый из переданных Promise перейдет в состояние завершения.

function monitor(promises) {
    // ваш код
}

Ответ

Используйте Promise.allSettled: он ждёт завершения всех элементов независимо от успеха или ошибки. После ожидания выведите 'all done'.

async function monitor(promises) {
  const results = await Promise.allSettled(promises);
  console.log('all done');
  return results;
}

Promise.all не подходит, если требуется дождаться всех после первой ошибки: он отклоняется сразу. Для пустого массива сообщение также появится, после возобновления async-функции. Если один из промисов никогда не завершится, monitor продолжит ждать; при необходимости таймаут задаётся отдельным контрактом.

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

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

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

Подробнее