async e await in JavaScript
Introduzione ad async e await
In JavaScript molte operazioni (come richieste al server o timer) non terminano subito, ma in modo asincrono. async
e await
ci permettono di scrivere codice asincrono con una sintassi semplice e leggibile, simile a quella del codice sincrono.
Funzioni async
Una funzione dichiarata con async
restituisce sempre una Promise. Se la funzione ritorna un valore semplice, questo viene automaticamente racchiuso in una Promise risolta.
Codice Esempio: funzione async

async function saluta() {
return "Ciao!";
}
saluta().then(messaggio => console.log(messaggio));
// Output: Ciao!
Utilizzo di await
await
può essere usato solo dentro funzioni async
. Serve per aspettare che una Promise sia risolta, bloccando momentaneamente l’esecuzione della funzione e rendendo il codice più leggibile.
Codice Esempio: uso di await

function promessa() {
return new Promise(resolve => {
setTimeout(() => resolve("Operazione completata!"), 2000);
});
}
async function esegui() {
console.log("Inizio...");
let risultato = await promessa();
console.log(risultato);
console.log("Fine.");
}
esegui();
// Output:
// Inizio...
// (dopo 2 secondi)
// Operazione completata!
// Fine.
Gestione errori con async/await
Gli errori all’interno di funzioni async
possono essere gestiti con try...catch
, rendendo il codice ancora più chiaro rispetto alla catena di .then()
e .catch()
.
Codice Esempio: gestione errori

async function fetchDati() {
try {
let risposta = await fetch("https://jsonplaceholder.typicode.com/posts/1");
let dati = await risposta.json();
console.log(dati);
} catch (errore) {
console.error("Si è verificato un errore:", errore);
}
}
fetchDati();
Tabella riassuntiva
Parola chiave | Descrizione | Esempio |
---|---|---|
async |
Dichiara una funzione che restituisce sempre una Promise | async function x() { ... } |
await |
Sospende l’esecuzione finché la Promise non è risolta | let res = await fetch(...) |
try...catch |
Gestisce eventuali errori in codice asincrono | try { await ... } catch(e) { ... } |
Considerazioni
async
e await
rendono il codice asincrono più leggibile e facile da gestire. Sono particolarmente utili quando si lavora con chiamate a server, operazioni che richiedono tempo o catene di Promesse complesse.