Вопрос проверяет понимание того, как async/await упрощает работу с промисами, делая асинхронный код более читаемым и похожим на синхронный.
Async/await — это синтаксическая надстройка над промисами, введённая в ES2017. Она не добавляет новой функциональности, а лишь предоставляет более удобный способ работы с асинхронными операциями. Вместо цепочек вызовов .then() и .catch() вы можете писать код, который выглядит как последовательный синхронный, но при этом остаётся неблокирующим.
Когда вы объявляете функцию с ключевым словом async, она автоматически возвращает промис. Внутри такой функции можно использовать await, который приостанавливает выполнение до тех пор, пока промис не будет разрешён или отклонён. На самом деле await — это просто замена вызова .then(), а async — замена оборачивания результата в Promise.resolve().
// Без async/await (чистые промисы)
function fetchData() {
return fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
}
// С async/await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}Async/await широко используется в современном JavaScript для работы с API, базами данных, файловой системой и любыми другими асинхронными операциями. Он особенно полезен в сценариях, где требуется последовательное выполнение нескольких асинхронных шагов, например, загрузка данных, их обработка и сохранение.
Async/await — это синтаксический сахар, который делает асинхронный код более читаемым и поддерживаемым, не меняя его сути. Его стоит применять везде, где используются промисы, чтобы улучшить читаемость и упростить обработку ошибок.