> В чем разница между Promise.all и Promise.allSettled в JavaScript? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Альфа-банк, Инрэко, ООО Премиум ИТ Солюшен
Стек: JavaScript
> Пример ответа
Основное различие между Promise.all и Promise.allSettled - в поведении при отклонении одного из промисов.
-
Promise.all завершается с ошибкой сразу, как только любой из переданных промисов отклоняется (rejected). Результатом будет ошибка первого отклонённого промиса, а остальные промисы игнорируются (даже если они ещё не завершились). Используется, когда все промисы критически важны для итогового результата.
-
Promise.allSettled дожидается завершения всех промисов независимо от их статуса. Возвращает массив объектов с полями
status("fulfilled"или"rejected") иvalue/reason. Подходит, когда нужно получить результаты всех операций, даже если некоторые завершились ошибкой (например, загрузка нескольких независимых ресурсов).
Пример:
JAVASCRIPTconst promises = [Promise.resolve(1),Promise.reject('Ошибка'),Promise.resolve(3),];// Promise.all - упадёт сразу с 'Ошибка'Promise.all(promises).catch(err => console.log(err)); // 'Ошибка'// Promise.allSettled - дождётся всехPromise.allSettled(promises).then(results => {console.log(results);// [// { status: 'fulfilled', value: 1 },// { status: 'rejected', reason: 'Ошибка' },// { status: 'fulfilled', value: 3 }// ]});
> Похожие задачи по frontend
Каков порядок выполнения задач (task) и микротасков (microtask) в JavaScript
Можно ли изменять массивы и объекты, объявленные через const в JavaScript?
Как сравнить массивы аргументов для кеширования в функции memo в JavaScript
Можно ли сравнить два объекта в JavaScript и как это сделать
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью