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