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:

javascriptlet 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:

javascriptPromise.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:

javascriptPromise.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:

javascriptPromise.all(promises).then(function(res) {
  console.log(res);
}).catch(function(err) {
  console.log(err);
});
Задание 1

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.

Задание 2

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

Задание 3

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