Назад к вопросам
Junior
117
questionbank
В чем разница между использованием Promise и синтаксисом async/await?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Promise представляет собой объект, который отражает конечное завершение или отказ асинхронной операции. Он управляет асинхронными потоками с помощью колбеков .then() и .catch().
async/await - это синтаксический сахар над Promise, который делает асинхронный код более читаемым и похожим на синхронный. Функция, помеченная как async, всегда возвращает Promise. Оператор await можно использовать только внутри async функции и он приостанавливает выполнение функции до тех пор, пока Promise не будет выполнен или отклонен, после чего возвращает его результат или генерирует исключение.
| Аспект | Promise | Async/Await |
|---|---|---|
| Читаемость | Требует цепочек .then() и .catch() |
Похож на синхронный код, линейный поток |
| Обработка ошибок | Использует .catch() |
Использует блоки try...catch |
| Поток выполнения | Управляется колбеками | Приостанавливает/возобновляет функцию |
| Возвращаемое значение | Promise | Promise (для async функции) или результат Promise (для await) |
| Зависимость | Самостоятельный механизм | Построен на основе Promise |
Пример с Promise:
// Пример с Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Данные получены (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Пример с async/await:
// Пример с async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Данные получены (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();