Junior
Aký je rozdiel medzi používaním Promise a syntaxou async/await?
sobes.tech AI
Odpoveď od AI
Promise predstavuje objekt, ktorý odráža konečné dokončenie alebo odmietnutie asynchrónnej operácie. Riadi asynchrónne toky pomocou callbackov .then() a .catch().
async/await je syntaktický cukor nad Promise, ktorý robí asynchrónny kód čitateľnejším a podobným synchronnému. Funkcia označená ako async vždy vracia Promise. Operátor await možno použiť iba vo vnútri async funkcií a pozastaví vykonávanie funkcie, kým Promise nebude vyriešený alebo odmietnuty, a potom vráti jeho výsledok alebo vyvolá výnimku.
| Aspekt | Promise | Async/Await |
|---|---|---|
| Čitateľnosť | Vyžaduje reťazce .then() a .catch() |
Vyzerá ako synchronný kód, lineárny tok |
| Spracovanie chýb | Používa .catch() |
Používa bloky try...catch |
| Tok vykonávania | Riadený callbackmi | Pozastavuje/obnovuje funkciu |
| Vrátená hodnota | Promise | Promise (pre async funkcie) alebo výsledok Promise (pre await) |
| Závislosti | Samostatný mechanizmus | Postavené na Promise |
Príklad s Promise:
// Príklad s Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Dáta prijatá (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Príklad s async/await:
// Príklad s async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Dáta prijatá (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();