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.