Sobes.tech
Middle

Perché è stata introdotta la costruzione async/await e come migliora il lavoro con il codice asincrono?

sobes.tech AI

Risposta dell'AI

Async/await è stato introdotto per semplificare la scrittura di codice asincrono, rendendolo più leggibile e manutenibile rispetto ai callback o alle promesse tradizionali.

Come migliora:

  1. Leggibilità: Il codice con async/await appare come codice sincrono, riga per riga, facilitando la comprensione.
  2. Gestione degli errori: Permette di usare costrutti standard come try/catch per gestire gli errori nel codice asincrono, a differenza di .catch() nelle promesse.
  3. Debug: I punti di interruzione (breakpoints) funzionano come nel codice sincrono, semplificando il processo di debug.
  4. Meno "callback hell": Elimina il problema dei callback annidati, che porta a codice illeggibile.

Esempio:

Codice con promesse:

// Esempio con promesse
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Errore nel recupero dei dati:', error);
  });

Lo stesso codice con async/await:

// Esempio con async/await
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Errore nel recupero dei dati:', error);
  }
}

fetchData();

La costruzione async/await si basa sulle promesse ed è uno zucchero sintattico per lavorare con esse. La funzione contrassegnata come async restituisce sempre una promessa. L'operatore await può essere usato solo all’interno di funzioni async e "attende" la risoluzione della promessa, restituendo il suo valore risolto o generando un’eccezione in caso di errore.