⊗jsSpPrmAr 170 of 294 menu

Delo z nizi promisov v JavaScript

Zdaj bomo obravnavali dve uporabni metodi, ki omogočata delo z nizi promisov. Metoda Promise.all omogoča izvedbo kode po končanju vseh promisov, ki so ji posredovani v obliki matrike, metoda Promise.race pa čaka na nalaganje prvega promisa iz matrike, zavrže pa ostale.

Obe metodi kot rezultat vrneta nov promis. Za metodo Promise.all bo rezultat tega promisa matrika rezultatov vseh posredovanih promisov (vrstni red rezultatov ustreza vrstnemu redu promisov v matriki), za Promise.race pa rezultat prvega izvedenega promisa.

Poglejmo si to v praksi. Recimo, da imamo matriko promisov:

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

S pomočjo Promise.all počakajmo na končanje nalaganja vseh promisov iz naše matrike:

Promise.all(promises).then(function(res) { console.log(res); // izpiše [1, 2, 3] - rezultati vseh promisov });

Zdaj pa s pomočjo Promise.race počakajmo na končanje nalaganja prvega izmed promisov:

Promise.race(promises).then(function(res) { console.log(res); // izpiše 1 - rezultat prvega izvedenega promisa });

Če bo vsaj eden od promisov v matriki zavrnjen, bo promis z rezultatom takoj prešel v stanje rejected. Zato nastalo izjemo lahko ujamemo na običajen, vam že znan način, na primer prek catch:

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

Naredite funkcijo, ki vrne promis, znotraj katerega je nastavljena naključna zamuda od 1 do 10 sekund. Naj promis kot svoj rezultat vrne to zamudo. S pomočjo zanke in vaše funkcije napolnite matriko z 10 promisi.

Z uporabo matrike promisov iz prejšnje naloge poskrbite, da se v konzolo izpiše rezultat prvega izvedenega promisa.

Z uporabo matrike promisov iz prejšnje naloge poskrbite, da se v konzolo izpiše vsota rezultatov vseh promisov.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni