Назад к вопросам
Middle
115
questionbank
В чем преимущество синтаксического сахара, представленного в виде async/await, по сравнению с Promise?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Основное преимущество async/await перед "чистыми" промисами — это возможность писать асинхронный код в более синхронном и читаемом стиле.
Сравнение:
| Аспект | Promise |
async/await |
|---|---|---|
| Читаемость | Может привести к "цепочкам промисов". | Позволяет писать код почти как синхронный. |
| Обработка ошибок | Использует .catch(). |
Использует стандартный try...catch. |
| Последовательность | Requires careful chaining or Promise.all. |
Явная и легко читаемая. |
| Отладка | Может быть сложнее следить за потоком. | Приближена к отладке синхронного кода. |
| Синтаксический шум | Много .then(), .catch(). |
Меньше boilerplate кода. |
Пример с промисами:
// Пример с Promise
fetch('user.json')
.then(response => response.json())
.then(user => fetch(`https://api.github.com/users/${user.name}`))
.then(githubUser => githubUser.json())
.then(githubUser => {
// Обработка данных
console.log(githubUser);
})
.catch(error => {
console.error('Ошибка:', error);
});
Пример с async/await:
// Пример с async/await
async function getUserData() {
try {
const userResponse = await fetch('user.json');
const user = await userResponse.json();
const githubResponse = await fetch(`https://api.github.com/users/${user.name}`);
const githubUser = await githubResponse.json();
// Обработка данных
console.log(githubUser);
} catch (error) {
console.error('Ошибка:', error);
}
}
getUserData();
Таким образом, async/await не заменяет промисы, а является синтаксическим сахаром над ними, делая асинхронные операции более интуитивно понятными и простыми в поддержке.