Sobes.tech
Middle

Care este avantajul zahărului sintactic prezentat sub forma de async/await comparativ cu Promise?

sobes.tech AI

Răspuns de la AI

Principalul avantaj al async/await față de promisiunile "curate" este posibilitatea de a scrie cod asincron într-un stil mai sincron și mai ușor de citit.

Comparatie:

Aspect Promise async/await
Lizibilitate Poate duce la "lanțuri de promisiuni". Permite scrierea codului aproape ca sincron.
Tratarea erorilor Folosește .catch(). Folosește try...catch standard.
Secvențialitate Necesită o concatenare atentă sau Promise.all. Clar și ușor de citit.
Debugging Poate fi mai dificil de urmărit. Apropiat de debugging-ul codului sincron.
Zgomot sintactic Multe .then(), .catch(). Mai puțin boilerplate.

Exemplu cu promisiuni:

// Exemplu cu Promise
fetch('user.json')
  .then(response => response.json())
  .then(user => fetch(`https://api.github.com/users/${user.name}`))
  .then(githubUser => githubUser.json())
  .then(githubUser => {
    // Procesare date
    console.log(githubUser);
  })
  .catch(error => {
    console.error('Eroare:', error);
  });

Exemplu cu async/await:

// Exemplu cu 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();

    // Procesare date
    console.log(githubUser);
  } catch (error) {
    console.error('Eroare:', error);
  }
}

getUserData();

Prin urmare, async/await nu înlocuiește promisiunile, ci este un zahăr sintactic peste ele, făcând operațiile asincrone mai intuitive și mai ușor de întreținut.