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
Referenziare un @layer più alto in CSS
.NET Conference Italia 2024
Effettuare il binding di date in Blazor
Generare un hash con SHA-3 in .NET
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Utilizzare i primary constructor di C# per inizializzare le proprietà
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Usare il colore CSS per migliorare lo stile della pagina
Gestire liste di tipi semplici con Entity Framework Core
Eseguire i worklow di GitHub su runner potenziati
Filtrare i dati di una QuickGrid in Blazor con una drop down list