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:
- Leggibilità: Il codice con
async/awaitappare come codice sincrono, riga per riga, facilitando la comprensione. - Gestione degli errori: Permette di usare costrutti standard come try/catch per gestire gli errori nel codice asincrono, a differenza di
.catch()nelle promesse. - Debug: I punti di interruzione (breakpoints) funzionano come nel codice sincrono, semplificando il processo di debug.
- 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.