Junior
Jaký je rozdíl mezi použitím Promise a syntaxí async/await?
sobes.tech AI
Odpověď od AI
Promise představuje objekt, který odráží konečné dokončení nebo odmítnutí asynchronní operace. Řídí asynchronní toky pomocí callbacků .then() a .catch().
async/await je syntaktický cukr nad Promise, který činí asynchronní kód čitelnějším a podobným synchronnímu. Funkce označená jako async vždy vrací Promise. Operátor await lze použít pouze uvnitř async funkcí a pozastaví provádění funkce, dokud Promise nebude vyřešen nebo odmítnut, a poté vrátí jeho výsledek nebo vyvolá výjimku.
| Aspekt | Promise | Async/Await |
|---|---|---|
| Čitelnost | Vyžaduje řetězce .then() a .catch() |
Vypadá jako synchronní kód, lineární tok |
| Zpracování chyb | Používá .catch() |
Používá bloky try...catch |
| Tok provádění | Řídí se callbacky | Pozastaví/obnoví funkci |
| Vrácená hodnota | Promise | Promise (pro async funkce) nebo výsledek Promise (pro await) |
| Závislosti | Samostatný mechanismus | Postaveno na Promise |
Příklad s Promise:
// Příklad s Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data přijata (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Příklad s async/await:
// Příklad s async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data přijata (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();