⊗jsSpPrmAr 170 of 294 menu

Rad sa nizovima promisa u JavaScript

Sada ćemo razmotriti dve korisne metode, koje omogućavaju rad sa nizovima promisa. Metoda Promise.all omogućava izvršenje koda po završetku svih promisa, prosleđenih joj u vidu niza, a metoda Promise.race čeka učitavanje prvog promisa iz niza, odbacujući ostale.

Obe metode svojim rezultatom vraćaju novi promis. Za metodu Promise.all rezultat tog promisa će biti niz rezultata svih prosledjenih promisa (redosled rezultata odgovara redosledu promisa u nizu), a za Promise.race - rezultat prvog aktiviranog promisa.

Hajde da pogledamo u praksi. Recimo da imamo niz promisa:

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

Hajde da pomoću Promise.all sačekamo završetak učitavanja svih promisa iz našeg niza:

Promise.all(promises).then(function(res) { console.log(res); // ispisaće [1, 2, 3] - rezultati svih promisa });

A sada pomoću Promise.race sačekajmo završetak učitavanja prvog od promisa:

Promise.race(promises).then(function(res) { console.log(res); // ispisaće 1 - rezultat prvog izvršenog promisa });

Ako je bar jedan od promisa u nizu odbijen, onda će promis sa rezultatom odmah preći u stanje rejected. Zato nastali izuzetak možete uhvatiti uobičajenim, već od vas naučenim načinom, na primer, preko catch:

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

Napravite funkciju, koja vraća promis, unutar kojeg je postavljeno slučajno kašnjenje od 1 do 10 sekundi. Neka svojim rezultatom promis vraća to kašnjenje. Pomoću petlje i vaše funkcije popunite niz sa 10 promisa.

Koristeći niz promisa iz prethodnog zadatka učinite tako da se u konzolu ispiše rezultat prvog aktiviranog promisa.

Koristeći niz promisa iz prethodnog zadatka učinite tako da se u konzolu ispiše zbir rezultata svih promisa.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij