Используйте Promise.allSettled: он ждёт завершения всех элементов независимо от успеха или ошибки. После ожидания выведите 'all done'.
Мониторинг завершения массива Promise
Используйте 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 продолжит ждать; при необходимости таймаут задаётся отдельным контрактом.