⊗jsSpPrmAr 170 of 294 menu

Lavorare con array di Promise in JavaScript

Ora analizzeremo due metodi utili, che permettono di lavorare con array di Promise. Il metodo Promise.all permette di eseguire il codice al termine di tutte le Promise, passate ad esso sotto forma di array, mentre il metodo Promise.race attende il completamento della prima Promise dell'array, scartando le altre.

Entrambi i metodi restituiscono come risultato una nuova Promise. Per il metodo Promise.all il risultato di questa Promise sarà un array con i risultati di tutte le Promise passate (l'ordine dei risultati corrisponde all'ordine delle Promise nell'array), mentre per Promise.race - il risultato della prima Promise completata.

Vediamo in pratica. Supponiamo di avere un array di Promise:

let promises = [ new Promise(resolve => setTimeout(() => resolve(1), 1000)), new Promise(resolve => setTimeout(() => resolve(2), 2000)), new Promise(resolve => setTimeout(() => resolve(3), 3000)), ];

Utilizziamo Promise.all per attendere il completamento di tutte le Promise del nostro array:

Promise.all(promises).then(function(res) { console.log(res); // visualizzerà [1, 2, 3] - i risultati di tutte le Promise });

Ora utilizziamo Promise.race per attendere il completamento della prima delle Promise:

Promise.race(promises).then(function(res) { console.log(res); // visualizzerà 1 - il risultato della prima Promise completata });

Se almeno una delle Promise nell'array viene rigettata, la Promise con il risultato passerà immediatamente allo stato rejected. Pertanto l'eccezione generata può essere catturata nel modo consueto, che avete già studiato, ad esempio, tramite catch:

Promise.all(promises).then(function(res) { console.log(res); }).catch(function(err) { console.log(err); });

Create una funzione che restituisce una Promise, all'interno della quale è impostato un ritardo casuale da 1 a 10 secondi. La Promise restituisca come suo risultato questo ritardo. Utilizzando un ciclo e la vostra funzione, riempite un array con 10 Promise.

Utilizzando l'array di Promise della task precedente, fate in modo che in console venga visualizzato il risultato della prima Promise completata.

Utilizzando l'array di Promise della task precedente, fate in modo che in console venga visualizzata la somma dei risultati di tutte le Promise.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta