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.

IP: 216.73.216.214