Sobes.tech
Назад к вопросам
Middle+
3

В чём отличие между последовательным await p1, await p2 и Promise.all([p1, p2])?

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

При последовательном использовании await p1; await p2; выполнение кода приостанавливается сначала до завершения p1, затем — до завершения p2. Это значит, что второй промис начнёт выполняться только после того, как первый завершится.

В случае Promise.all([p1, p2]) оба промиса запускаются параллельно, и выполнение кода ждёт, пока оба промиса завершатся. Это эффективнее, если промисы не зависят друг от друга.

Пример:

async function sequential() {
  const result1 = await p1; // ждём p1
  const result2 = await p2; // ждём p2 после p1
  return [result1, result2];
}

async function parallel() {
  const [result1, result2] = await Promise.all([p1, p2]); // ждём оба одновременно
  return [result1, result2];
}

Итог: Promise.all позволяет выполнять промисы параллельно, что сокращает общее время ожидания, а последовательный await — выполняет их один за другим.