⊗jsSpPrmAr 170 of 294 menu

Lucrul cu matrice de promisiuni în JavaScript

Acum vom analiza două metode utile, care permit lucrul cu matrice de promisiuni. Metoda Promise.all permite executarea codului după finalizarea tuturor promisiunilor, transmise acestuia sub formă de matrice, iar metoda Promise.race așteaptă încărcarea primei promisiuni din matrice, eliminând restul.

Ambele metode returnează ca rezultat o nouă promisiune. Pentru metoda Promise.all rezultatul acestei promisiuni va fi o matrice cu rezultatele tuturor promisiunilor transmise (ordinea rezultatelor corespunde ordinii promisiunilor în matrice), iar pentru Promise.race - rezultatul primei promisiuni care s-a finalizat.

Să vedem în practică. Să presupunem că avem o matrice de promisiuni:

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

Să folosim Promise.all pentru a aștepta finalizarea încărcării tuturor promisiunilor din matricea noastră:

Promise.all(promises).then(function(res) { console.log(res); // va afișa [1, 2, 3] - rezultatele tuturor promisiunilor });

Acum să folosim Promise.race pentru a aștepta finalizarea încărcării primei promisiuni:

Promise.race(promises).then(function(res) { console.log(res); // va afișa 1 - rezultatul primei promisiuni care s-a finalizat });

Dacă cel puțin una dintre promisiunile din matrice va fi respinsă, atunci promisiunea cu rezultat va trece imediat în starea rejected. Prin urmare, excepția apărută poate fi prinsă în mod obișnuit, deja studiat de dvs., de exemplu, prin catch:

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

Creați o funcție care returnează o promisiune, în interiorul căreia este setată o întârziere aleatorie de la 1 până la 10 secunde. Fie ca rezultat promisiunea să returneze această întârziere. Cu ajutorul unei bucle și a funcției dvs., umpleți matricea cu 10 promisiuni.

Folosind matricea de promisiuni din sarcina anterioară, faceți astfel încât în consolă să fie afișat rezultatul primei promisiuni care s-a finalizat.

Folosind matricea de promisiuni din sarcina anterioară, faceți astfel încât în consolă să fie afișată suma rezultatelor tuturor promisiunilor.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge