Middle
Aký je prínos syntaktického cukru prezentovaného vo forme async/await v porovnaní s Promise?
sobes.tech AI
Odpoveď od AI
Hlavnou výhodou async/await oproti "čistým" promise je možnosť písať asynchrónny kód v štýle, ktorý je bližší synchronnému a čitateľnejšiemu.
Porovnanie:
| Aspekt | Promise |
async/await |
|---|---|---|
| Čitateľnosť | Môže viesť k "reťazcom promise". | Umožňuje písať kód takmer ako synchronný. |
| Spracovanie chýb | Používa .catch(). |
Používa štandardný try...catch. |
| Sekvenčnosť | Vyžaduje opatrné reťazenie alebo Promise.all. |
Jasné a ľahko čitateľné. |
| Debugovanie | Môže byť ťažšie sledovať tok. | Podobné ako debugovanie synchronného kódu. |
| Syntaktický šum | Mnoho .then(), .catch(). |
Menej boilerplate kódu. |
Príklad s promises:
// Prí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 => {
// Spracovanie dát
console.log(githubUser);
})
.catch(error => {
console.error('Chyba:', error);
});
Príklad s async/await:
// Prí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();
// Spracovanie dát
console.log(githubUser);
} catch (error) {
console.error('Chyba:', error);
}
}
getUserData();
Takže, async/await nenahrádza promises, ale je to ich syntaktický cukor, ktorý robí asynchrónne operácie intuitívnejšími a ľahšie udržiavateľnými.