⊗jsSpPrmAr 170 of 294 menu

Praca z tablicami obietnic w JavaScript

Teraz przeanalizujemy dwie przydatne metody, pozwalające pracować z tablicami obietnic. Metoda Promise.all pozwala wykonać kod po zakończeniu wszystkich obietnic, przekazanych jej w postaci tablicy, a metoda Promise.race czeka na załadowanie pierwszej obietnicy z tablicy, odrzucając pozostałe.

Obie metody swoim wynikiem zwracają nową obietnicę. Dla metody Promise.all wynikiem tej obietnicy będzie tablica wyników wszystkich przekazanych obietnic (kolejność wyników odpowiada kolejności obietnic w tablicy), a dla Promise.race - wynik pierwszej wykonanej obietnicy.

Spójrzmy w praktyce. Załóżmy, że mamy tablicę obietnic:

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

Użyjmy Promise.all, aby poczekać na zakończenie ładowania wszystkich obietnic z naszej tablicy:

Promise.all(promises).then(function(res) { console.log(res); // wypisze [1, 2, 3] - wyniki wszystkich obietnic });

A teraz użyjmy Promise.race, aby poczekać na zakończenie ładowania pierwszej z obietnic:

Promise.race(promises).then(function(res) { console.log(res); // wypisze 1 - wynik pierwszej wykonanej obietnicy });

Jeśli przynajmniej jedna z obietnic w tablicy zostanie odrzucona, to obietnica z wynikiem natychmiast przejdzie w stan rejected. Dlatego powstały wyjątek można złapać zwyczajnym, już przez was poznanym sposobem, na przykład, przez catch:

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

Stwórz funkcję, zwracającą obietnicę, wewnątrz której ustawione jest losowe opóźnienie od 1 do 10 sekund. Niech swoim wynikiem obietnica zwraca to opóźnienie. Za pomocą pętli i twojej funkcji wypełnij tablicę 10 obietnicami.

Korzystając z tablicy obietnic z poprzedniego zadania spraw, aby w konsoli wypisał się wynik pierwszej wykonanej obietnicy.

Korzystając z tablicy obietnic z poprzedniego zadania spraw, aby w konsoli wypisała się suma wyników wszystkich obietnic.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć