В чем разница между Promise.all и await

«В чем разница между Promise.all и await» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Promise.all и await решают разные задачи, но могут использоваться вместе.

Promise.all:

  • Принимает массив промисов и возвращает новый промис, который резолвится, когда все переданные промисы завершатся успешно.
  • Если хотя бы один промис реджектится, весь Promise.all реджектится с ошибкой первого упавшего промиса.
  • Полезен для параллельного выполнения асинхронных операций.

await:

  • Оператор, который приостанавливает выполнение async-функции до разрешения промиса.
  • Работает с одним промисом, а не с массивом.
  • Позволяет писать асинхронный код в синхронном стиле.

Пример:

// С Promise.all
const [user, posts] = await Promise.all([
  fetchUser(),
  fetchPosts()
]);

// С await (последовательно)
const user = await fetchUser();
const posts = await fetchPosts();