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позволяет запускать несколько асинхронных операций параллельно и ждать их всех.