⊗jsSpPrmAr 170 of 294 menu

Práce s poli promis v JavaScriptu

Nyní si rozebereme dvě užitečné metody, které umožňují pracovat s poli promis. Metoda Promise.all umožňuje spustit kód po dokončení všech promis, které jí byly předány ve formě pole, a metoda Promise.race čeká na načtení první promis z pole, zatímco ostatní zahodí.

Obě metody svým výsledkem vracejí novou promis. Pro metodu Promise.all bude výsledkem této promis pole výsledků všech předaných promis (pořadí výsledků odpovídá pořadí promis v poli), a pro Promise.race - výsledek první z provedených promis.

Podívejme se to v praxi. Předpokládejme, že máme pole promis:

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

Nyní pomocí Promise.all počkejme až se načtou všechny promis z našeho pole:

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

A nyní pomocí Promise.race počkejme až se načte první z promis:

Promise.race(promises).then(function(res) { console.log(res); // vypíše 1 - výsledek první provedené promis });

Pokud bude alespoň jedna z promis v poli zamítnuta, pak promis s výsledkem okamžitě přejde do stavu rejected. Proto vzniklou výjimku lze zachytit běžným, vám již známým způsobem, například pomocí catch:

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

Vytvořte funkci, vracející promis, uvnitř které je nastaveno náhodné zpoždění od 1 do 10 sekund. Ať svým výsledkem promis vrací toto zpoždění. Pomocí cyklu a vaší funkce naplňte pole 10 promis.

Pomocí pole promis z předchozí úlohy udělejte to, aby se do konzole vypsal výsledek první provedené promis.

Pomocí pole promis z předchozí úlohy udělejte to, aby se do konzole vypsal součet výsledků všech promis.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout