Что такое Promise.all?
Асинхронность и Event Loop
`Promise.all` принимает массив промисов и возвращает один промис, который выполняется, когда все входные успешны, или отклоняется, как только любой из них упал.
Поведение
- Все успешны → результат: массив значений в порядке входа (не в порядке завершения).
- Хотя бы один упал → немедленный reject с этой ошибкой (fail-fast), остальные не отменяются, но их результат игнорируется.
const [user, posts, comments] = await Promise.all([
fetch('/user').then((r) => r.json()),
fetch('/posts').then((r) => r.json()),
fetch('/comments').then((r) => r.json()),
]);Когда использовать
- Несколько независимых запросов, которые можно выполнить параллельно.
- Нужны все результаты, и при падении любого — общий провал допустим.
Детали
- Промисы стартуют одновременно (они уже запущены к моменту передачи).
- Порядок результатов соответствует порядку аргументов.
- Если падение части терпимо — берут
Promise.allSettled.
Частая ошибка
Последовательные await вместо all теряют параллельность:
const a = await fetchA(); // ждём
const b = await fetchB(); // потом ждём — медленно
// быстрее:
const [a2, b2] = await Promise.all([fetchA(), fetchB()]);Коротко для собеседования
Promise.all ждёт все промисы и даёт массив результатов по порядку входа; при первой же ошибке падает целиком (fail-fast). Используют для параллельных независимых операций.