Junior
Каква е разликата между използването на Promise и синтаксиса async/await?
sobes.tech AI
Отговор от AI
Promise представлява обект, който отразява крайното завършване или отказ на асинхронна операция. Той управлява асинхронните потоци чрез callbacks .then() и .catch().
async/await е синтактичен захар над Promise, който прави асинхронния код по-лесен за четене и подобен на синхронния. Функцията, маркирана като async, винаги връща Promise. Операторът await може да се използва само вътре в async функции и спира изпълнението на функцията, докато Promise не бъде изпълнен или отхвърлен, след което връща неговия резултат или генерира изключение.
| Аспект | Promise | Async/Await |
|---|---|---|
| Четивност | Изисква вериги .then() и .catch() |
Похож на синхронен код, линейна поток |
| Обработка на грешки | Използва .catch() |
Използва блокове try...catch |
| Поток на изпълнение | Управлява се от callback-и | Спира/възобновява функцията |
| Връщана стойност | 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();