Назад к вопросам
Junior
81
questionbank
В чем разница между ключевыми словами async и await?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Разница между async и await заключается в их назначении при работе с асинхронными операциями в JavaScript:
async— это модификатор функции, который указывает на то, что функция является асинхронной. Асинхронная функция всегда возвращает Promise, даже если явно не возвращает его или возвращает не-Promise значение. Это значение будет обёрнуто в разрешенный Promise.await— это оператор, который может использоваться только внутриasyncфункции. Он приостанавливает выполнениеasyncфункции до тех пор, пока Promise, к которому он применяется, не будет разрешен или отклонен. После разрешения Promise, операторawaitвозвращает его разрешенное значение. Если Promise отклонен,awaitвыбрасывает ошибку.
Проще говоря, async определяет, что функция может использовать await, а await позволяет "дождаться" результата асинхронной операции внутри такой функции, делая асинхронный код выглядящим и ведущим себя как синхронный.
// Пример использования
async function fetchData() {
// await используется внутри async функции
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
}
// Вызов async функции
fetchData();
Без async и await пришлось бы использовать .then() для обработки промисов:
// Эквивалент без async/await
function fetchDataWithThen() {
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data));
}
fetchDataWithThen();
Сравнение:
| Характеристика | async |
await |
|---|---|---|
| Назначение | Объявляет функцию асинхронной | Приостанавливает выполнение до разрешения Promise |
| Область | Перед объявлением функции | Только внутри async функции |
| Возвращает | Promise | Разрешенное значение Promise (или выбрасывает ошибку) |