Junior
V čom spočíva rozdiel medzi async/await a Promise?
sobes.tech AI
Odpoveď od AI
async/await je syntaktický cukor nad promises. Umožňuje písanie asynchrónneho kódu čitateľnejším, synchronizovaným štýlom, pomocou kľúčových slov async pre funkcie obsahujúce await, ktoré čakajú na vyriešenie promise. Promises sú objekty, ktoré predstavujú konečné dokončenie (alebo zlyhanie) asynchrónnej operácie a jej výslednú hodnotu.
| Vlastnosť | async/await | Promise |
|---|---|---|
| Syntax | Viac podobná synchronnému kódu. | Používa metódy .then(), .catch(), .finally(). |
| Čitateľnosť | Vo všeobecnosti vyššia, najmä pri reťazcoch. | Môže viesť k "Callback hell" pri zložitých reťazcoch. |
| Spracovanie chýb | Používa štandardný try...catch. |
Používa .catch() alebo druhý argument v .then(). |
| Paralelizmus | Vyžaduje explicitné použitie Promise.all() alebo Promise.allSettled(). |
Môže byť jasnejšie, ale menej čitateľné bez async/await. |
// Príklad s Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dáta prijaté');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Príklad s async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dáta prijaté');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();