Async

Riassunto

La parola chiave async in JavaScript permette di definire funzioni asincrone, che facilitano la gestione delle operazioni asincrone come richieste HTTP, timer e altre operazioni che richiedono tempo. Le funzioni asincrone restituiscono implicitamente una promessa (promise).

Introduzione ad Async

La parola chiave async viene utilizzata per dichiarare una funzione asincrona, che restituisce una promise e può contenere l'uso della parola chiave await per aspettare la risoluzione di altre promesse.

Funzioni Asincrone

Una funzione dichiarata con async restituisce automaticamente una promessa. La sintassi è la seguente:


            async function nomeFunzione() {
              // codice
            }
          

Un esempio di funzione asincrona:


            async function fetchData() {
              return "Dati ricevuti";
            }
  
            fetchData().then(data => console.log(data)); // Output: Dati ricevuti
          

Utilizzo di Await

La parola chiave await può essere utilizzata solo all'interno di funzioni dichiarate con async. Essa sospende l'esecuzione della funzione fino a quando la promessa non viene risolta:


            async function fetchData() {
              let response = await fetch('https://api.example.com/data');
              let data = await response.json();
              return data;
            }
  
            fetchData().then(data => console.log(data));
          

Nell'esempio sopra, l'uso di await consente di scrivere codice asincrono che sembra sincrono, rendendo il codice più leggibile e gestibile.

Gestione degli Errori

La gestione degli errori in una funzione asincrona può essere eseguita utilizzando un blocco try...catch:


            async function fetchData() {
              try {
                let response = await fetch('https://api.example.com/data');
                let data = await response.json();
                return data;
              } catch (error) {
                console.error('Errore:', error);
              }
            }
  
            fetchData().then(data => console.log(data));
          

In questo modo, gli errori derivanti da operazioni asincrone possono essere catturati e gestiti in modo efficace.

Esempio Completo

Un esempio completo che dimostra l'uso di async e await per effettuare una richiesta di rete e gestire la risposta:


            async function fetchUserData() {
              try {
                let response = await fetch('https://api.example.com/users/1');
                if (!response.ok) {
                  throw new Error('Errore di rete');
                }
                let userData = await response.json();
                console.log(userData);
              } catch (error) {
                console.error('Errore:', error);
              }
            }
  
            fetchUserData();
          

Questo esempio mostra come recuperare dati da un'API e gestire eventuali errori di rete o problemi di parsing JSON.