Junior
Koja je razlika između korišćenja Promise i sintakse async/await?
sobes.tech АИ
Одговор од АИ
Promise predstavlja objekat koji odražava završetak ili odbijanje asinhrone operacije. On upravlja asinhronim tokovima pomoću callbackova .then() i .catch().
async/await je sintaktički šećer nad Promise, koji čini asinhroni kod čitljivijim i sličnijim sinhronom. Funkcija označena kao async uvek vraća Promise. Operator await može se koristiti samo unutar async funkcija i zaustavlja izvršenje funkcije dok se Promise ne reši ili odbije, vraćajući njegov rezultat ili izazivajući izuzetak.
| Aspekt | Promise | Async/Await |
|---|---|---|
| Čitljivost | Zahteva lance .then() i .catch() |
Slično sinhronom kodu, linearn tok |
| Obrada grešaka | Koristi .catch() |
Koristi blokove try...catch |
| Tok izvršenja | Upravljan je callbackovima | Zaustavlja/nastavlja funkciju |
| Vraćena vrednost | Promise | Promise (za async funkcije) ili rezultat Promise (za await) |
| Zavisnosti | Samostalni mehanizam | Bazirano na Promise |
Primer sa Promise:
// Primer sa Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Podaci primljeni (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Primer sa async/await:
// Primer sa async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Podaci primljeni (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();