Middle
Jaké je výhoda syntaktického cukru prezentovaného ve formě async/await ve srovnání s Promise?
sobes.tech AI
Odpověď od AI
Hlavní výhodou async/await oproti "čistým" promise je možnost psát asynchronní kód v jednodušším a čitelnějším stylu.
Porovnání:
| Aspekt | Promise |
async/await |
|---|---|---|
| Čitelnost | Může vést k "řetězcům promise". | Umožňuje psát kód téměř jako synchronní. |
| Zpracování chyb | Používá .catch(). |
Používá standardní try...catch. |
| Sekvenčnost | Vyžaduje pečlivé řetězení nebo Promise.all. |
Jasné a snadno čitelné. |
| Debugging | Může být složitější sledovat tok. | Přibližně jako debugování synchronního kódu. |
| Syntaktický šum | Hodně .then(), .catch(). |
Méně boilerplate kódu. |
Příklad s promise:
// Příklad s Promise
fetch('user.json')
.then(response => response.json())
.then(user => fetch(`https://api.github.com/users/${user.name}`))
.then(githubUser => githubUser.json())
.then(githubUser => {
// Zpracování dat
console.log(githubUser);
})
.catch(error => {
console.error('Chyba:', error);
});
Příklad s async/await:
// Příklad s async/await
async function getUserData() {
try {
const userResponse = await fetch('user.json');
const user = await userResponse.json();
const githubResponse = await fetch(`https://api.github.com/users/${user.name}`);
const githubUser = await githubResponse.json();
// Zpracování dat
console.log(githubUser);
} catch (error) {
console.error('Chyba:', error);
}
}
getUserData();
Takže, async/await nenahrazuje promise, ale je to jejich syntaktický cukr, který činí asynchronní operace intuitivnějšími a snazšími na údržbu.