Sobes.tech
Back to questions
Middle
2

В чём разница между Promise и async/await? Как выполнить два асинхронных запроса параллельно? Какие методы Promise знаешь (all, allSettled, race, any)?

Companies where asked
ТранснефтьТранснефть

Answer from AI

sobes.tech AI

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

Разница:

  • Promise требует использования методов .then() и .catch() для обработки результата.
  • async/await позволяет использовать ключевые слова await для ожидания результата Promise внутри async-функции.

Для выполнения двух асинхронных запросов параллельно используют Promise.all, который принимает массив промисов и возвращает новый промис, который выполнится, когда все исходные завершатся.

Пример параллельного запроса:

async function fetchData() {
  const [res1, res2] = await Promise.all([
    fetch('/api/data1'),
    fetch('/api/data2')
  ]);
  const data1 = await res1.json();
  const data2 = await res2.json();
  return { data1, data2 };
}

Основные методы Promise:

  • Promise.all(iterable) — ждёт успешного выполнения всех промисов, если один отклоняется — отклоняет итоговый.
  • Promise.allSettled(iterable) — ждёт завершения всех промисов, возвращает массив с их статусами и результатами, не отклоняется.
  • Promise.race(iterable) — возвращает результат первого завершившегося промиса (успешного или отклонённого).
  • Promise.any(iterable) — возвращает результат первого успешно выполненного промиса, если все отклонены — отклоняется AggregateError.