Dagli script precedenti abbiamo imparato a utilizzare tutte le varie sfaccettature delle promise, ma dobbiamo tenere presente che per la programmazione asincrona abbiamo a disposizione anche le keyword async/await. Quando è giusto usare l'una o l'altra versione?
Una risposta giusta non esiste, dipende dalle situazioni: nel caso in cui, come nell'esempio seguente, volessimo attendere il risultato di più promise, potremmo usare la keyword await per attendere la risposta.
const urls = [ "https://mio-sito.it/users", "https://mio-sito.it/users/1", ]; //array di dati const data = []; for (url of urls) { await fetch(url) // conversione .then((response) => response.json()) // inserimento nell'array .then((jsonResponse) => data.push(jsonResponse)); }
Il codice presenta però un errore logico: ogni chiamata verrà attesa prima di eseguire la successiva. Per ottenere un'effettiva esecuzione asincrona e parallela delle operazioni avremo bisogno di modificarlo, utilizzando il metodo Promise.all, e attendendone la risposta con await.
Rifattoriziamo il codice creando in primo luogo una lista delle operazioni asincrone e utilizzando la funzione per attenderne la risoluzione.
const urls = [ "https://mio-sito.it/users", "https://mio-sito.it/users/1", ]; const promises = urls.map((url) => fetch(url).then((response) => response.json()) ); const data = await Promise.all(promises);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire codice JavaScript con code splitting e lazy loading
Usare i generics di C# con la clausola nameof in modo semplificato
Impostare automaticamente l'altezza del font tramite CSS
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Gestire progetti .NET + React in .NET Aspire
Esporre tool MCP con Azure Functions
Gestione delle issue type con GitHub
Blazor e Static Web Assets in .NET 10
Nuova modale riconnessione Blazor
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Controllare la telemetria con .NET Aspire
Response streaming con Blazor e .NET 10




