Junior
Quali metodi conosci per lavorare con codice asincrono?
sobes.tech AI
Risposta dell'AI
- Funzioni di callback: Passare una funzione come argomento a un'altra funzione, che verrà chiamata dopo il completamento di un'operazione asincrona. Possono portare a "callback hell".
- Promesse (Promises): Oggetti che rappresentano il completamento (o il fallimento) di un'operazione asincrona e il suo valore risultante. Offrono una gestione più strutturata dell'asincronia.
// Esempio di utilizzo di una promessa fetch('/api/data') .then(response => response.json()) // Gestione della risposta riuscita .then(data => console.log(data)) // Gestione dei dati ricevuti .catch(error => console.error('Errore nel recupero dei dati:', error)); // Gestione dell'errore - Async/await: Zucchero sintattico sulle promesse, che permette di scrivere codice asincrono in uno stile più sincrono, rendendolo più leggibile e facile da debug.
// Esempio di utilizzo di async/await async function fetchData() { try { const response = await fetch('/api/data'); // Attesa della promessa if (!response.ok) { throw new Error(`Errore HTTP! stato: ${response.status}`); } const data = await response.json(); // Attesa della promessa console.log(data); } catch (error) { console.error('Errore nel recupero dei dati:', error); // Gestione dell'errore } } fetchData(); - Generatori (Generators): Possono essere usati per lavorare con l'asincronia in combinazione con la libreria
coo manualmente, anche seasync/awaitè diventato un approccio più diffuso.
Confronto degli approcci principali:
| Metodo | Vantaggi | Svantaggi |
|---|---|---|
| Callbacks | Semplice all'inizio | "Callback hell", complessità nella gestione degli errori |
| Promesse | Migliore leggibilità, gestione degli errori | Possono essere ingombranti nelle catene di operazioni |
| Async/await | Alta leggibilità, somiglianza con il codice sincrono | Richiede supporto dell'ambiente per async/await |