Назад к вопросам
IT One
Middle+
3
В чём отличие между последовательным await p1, await p2 и Promise.all([p1, p2])?
Компании, где спрашивали
Ответ от нейросети
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 — выполняет их один за другим.