JavaScript-də Promise massivləri ilə işləmək

İndi biz Promise massivləri ilə işləməyə imkan verən iki faydalı metodu nəzərdən keçirəcəyik. Promise.all metodu ona massiv şəklində ötürülən bütün Promise-lər bitdikdən sonra kodu icra etməyə imkan verir, Promise.race metodu isə massivdən ilk yüklənən Promise-i gözləyir, qalanları isə rədd edir.

Hər iki metod öz nəticəsi kimi yeni Promise qaytarır. Promise.all metodu üçün bu Promise-in nəticəsi bütün ötürülən Promise-lərin nəticələrinin massivi olacaq (nəticələrin sırası massivdəki Promise-lərin sırasına uyğun gəlir), Promise.race üçün isə - ilk işləyən Promise-in nəticəsi.

Gəlin praktikada baxaq. Tutaq ki, bizim Promise massivimiz var:

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

Gəlin Promise.all ilə massivimizdəki bütün Promise-lərin yüklənməsinin bitməsini gözləyək:

javascriptPromise.all(promises).then(function(res) {
  console.log(res); // [1, 2, 3] - bütün Promise-lərin nəticələrini çap edəcək
});

İndi isə Promise.race ilə Promise-lərdən birincisinin yüklənməsinin bitməsini gözləyək:

javascriptPromise.race(promises).then(function(res) {
  console.log(res); // 1 - ilk icra olunan Promise-in nəticəsini çap edəcək
});

Əgər massivdəki Promise-lərdən hər hansı biri rədd edilərsə, nəticə Promise-i dərhal rejected vəziyyətinə keçəcək. Buna görə də yaranan istisnanı adi, artıq öyrəndiyiniz üsulla, məsələn, catch ilə tuta bilərsiniz:

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

İçərisində 1 ilə 10 saniyə arasında təsadüfi gecikmə təyin olunmuş Promise qaytaran funksiya düzəldin. Promise öz nəticəsi kimi bu gecikməni qaytarsın. Döngü və funksiyanızdan istifadə edərək massivi 10 Promise ilə doldurun.

Задание 2

Əvvəlki məsələdən olan Promise massivindən istifadə edərək ilk işləyən Promise-in nəticəsi konsola çıxarılacaq şəkildə edin.

Задание 3

Əvvəlki məsələdən olan Promise massivindən istifadə edərək bütün Promise-lərin nəticələrinin cəmi konsola çıxarılacaq şəkildə edin.