⊗jsSpPrmAr 170 of 294 menu

Práca s poľom promisov v JavaScript

Teraz si rozoberieme dve užitočné metódy, ktoré umožňujú pracovať s poľom promisov. Metóda Promise.all umožňuje vykonať kód po ukončení všetkých promisov, ktoré sú jej odovzdané vo forme poľa, a metóda Promise.race čaká na načítanie prvého promisu z poľa, pričom zvyšok ignoruje.

Obe metódy svojím výsledkom vracajú nový promis. Pre metódu Promise.all bude výsledkom tohto promisu pole výsledkov všetkých odovzdaných promisov (poradie výsledkov zodpovedá poradiu promisov v poli), a pre Promise.race - výsledok prvého zbehnutého promisu.

Pozrime sa na to v praxi. Predpokladajme, že máme pole promisov:

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

Použitím Promise.all počkajme na ukončenie načítania všetkých promisov z nášho poľa:

Promise.all(promises).then(function(res) { console.log(res); // vypíše [1, 2, 3] - výsledky všetkých promisov });

A teraz pomocou Promise.race počkajme na ukončenie načítania prvého z promisov:

Promise.race(promises).then(function(res) { console.log(res); // vypíše 1 - výsledok prvého promisu, ktorý sa vykonal });

Ak bude aspoň jeden z promisov v poli zamietnutý, potom promis s výsledkom okamžite prejde do stavu rejected. Preto vzniknutú výnimku môžete zachytiť bežným, už naučeným spôsobom, napríklad pomocou catch:

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

Vytvorte funkciu, ktorá vráti promis, v ktorom je nastálená náhodná oneskorenie od 1 do 10 sekúnd. Nech svojim výsledkom promis vráti toto oneskorenie. Pomocou cyklu a vašej funkcie naplňte pole 10 promismi.

Použitím poľa promisov z predchádzajúcej úlohy urobte tak, aby sa do konzoly vypísal výsledok prvého promisu, ktorý sa vykonal.

Použitím poľa promisov z predchádzajúcej úlohy urobte tak, aby sa do konzoly vypísal súčet výsledkov všetkých 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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť