Junior
V čem spočívá rozdíl mezi async/await a Promise?
sobes.tech AI
Odpověď od AI
async/await je syntaktický cukr nad promises. Umožňuje psát asynchronní kód čitelnějším, synchronním stylem, pomocí klíčových slov async pro funkce obsahující await, které čekají na vyřešení promise. Promises jsou objekty, které představují konečné dokončení (nebo selhání) asynchronní operace a její výslednou hodnotu.
| Vlastnost | async/await | Promise |
|---|---|---|
| Syntaxe | Více podobná synchronnímu kódu. | Používá metody .then(), .catch(), .finally(). |
| Čitelnost | Obvykle vyšší, zvláště u řetězců. | Může vést k "Callback hell" u složitých řetězců. |
| Zpracování chyb | Používá standardní try...catch. |
Používá .catch() nebo druhý argument v .then(). |
| Paralelismus | Vyžaduje explicitní použití Promise.all() nebo Promise.allSettled(). |
Může být více explicitní, ale méně čitelný bez async/await. |
// Příklad s Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data přijata');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Příklad s async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data přijata');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();