Junior
Koja je razlika između async/await i Promise?
sobes.tech АИ
Одговор од АИ
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();