Sobes.tech
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.