> Как работает Promise.all в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Cyber Interactive, РСХБ, IT-One, Библио-Глобус, TYMY, Яндекс
Стек: JavaScript
> Пример ответа
Promise.all - это статический метод, который принимает итерируемый объект (чаще всего массив) промисов и возвращает один промис. Этот результирующий промис разрешается массивом значений исходных промисов в том же порядке, в котором они были переданы, только когда все переданные промисы завершатся успешно. Если хотя бы один промис отклоняется (reject), то Promise.all немедленно отклоняется с причиной первого отклонённого промиса - это поведение называется "fail-fast".
Пример использования:
JAVASCRIPTconst promise1 = Promise.resolve(1);const promise2 = new Promise((resolve) => setTimeout(() => resolve(2), 100));const promise3 = fetch('/data').then(res => res.json());Promise.all([promise1, promise2, promise3]).then(([result1, result2, result3]) => {console.log(result1, result2, result3);}).catch(error => {console.error('Один из промисов упал:', error);});
Важные нюансы:
-
Если передан пустой массив,
Promise.allразрешается немедленно с пустым массивом. -
Если любой элемент не является промисом, он оборачивается в
Promise.resolve(). -
Из-за "fail-fast" другие промисы не отменяются, они продолжают выполняться, но их результаты игнорируются.
-
Для обработки всех результатов, включая ошибки, используйте
Promise.allSettled.
> Похожие задачи по frontend
В чем отличие массивов от объектов в JavaScript
Как работает сборщик мусора в JavaScript
Как получить все ключи объекта в JavaScript
Как работает цепочка Promise.then.catch.then.catch.then в JavaScript и когда выполняется последний then
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью