Junior
Каква е разликата между async/await и Promise?
sobes.tech AI
Отговор от AI
async/await е синтактичен захар над promises. Позволява да пишете асинхронен код по-четлив и подобен на синхронен, използвайки ключовите думи async за функции, които съдържат await, за да изчакат разрешаването на promise. Promises са обекти, които представляват крайното завършване (или неуспех) на асинхронна операция и нейното резултатно стойност.
| Особеност | async/await | Promise |
|---|---|---|
| Синтаксис | По-скоро подобен на синхронен код. | Използва методите .then(), .catch(), .finally(). |
| Четливост | Обикновено по-висока, особено при вериги. | Може да доведе до "Callback hell" при сложни вериги. |
| Обработка на грешки | Използва стандартния try...catch. |
Използва .catch() или втория аргумент в .then(). |
| Паралелизъм | Изисква явно използване на Promise.all() или Promise.allSettled(). |
Може да е по-ясен, но по-малко четим без async/await. |
// Пример с Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Данните са получени');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Пример с async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Данните са получени');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();