Sobes.tech
Back to questions
Junior — Middle
92

Как различаются механизмы async/await и Promise.all при работе с асинхронными операциями в JavaScript?

Answer from AI

sobes.tech AI

async/await и Promise.all — это разные механизмы работы с асинхронностью в JavaScript, которые часто используются вместе, но решают разные задачи.

  • async/await — синтаксический сахар над промисами, позволяющий писать асинхронный код в стиле синхронного. Позволяет ждать завершения одного промиса перед продолжением.

  • Promise.all — принимает массив промисов и возвращает новый промис, который:

    • резолвится, когда все промисы из массива успешно завершены,
    • реджектится, если хотя бы один промис завершился с ошибкой.

Пример использования вместе:

async function fetchData() {
  const results = await Promise.all([
    fetch(url1),
    fetch(url2),
    fetch(url3)
  ]);
  // results — массив ответов
}

Здесь Promise.all запускает все запросы параллельно, а await ждёт, пока все завершатся.

Если использовать только await последовательно:

async function fetchDataSequential() {
  const res1 = await fetch(url1);
  const res2 = await fetch(url2);
  const res3 = await fetch(url3);
}

то запросы выполнятся последовательно, что медленнее.

Итого:

  • async/await упрощает чтение асинхронного кода.
  • Promise.all позволяет запускать несколько асинхронных операций параллельно и ждать их всех.