პრომისების მასივებთან მუშაობა JavaScript-ში

ახლა ჩვენ გავაანალიზებთ ორ სასარგებლო მეთოდს, რომლებიც საშუალებას გვაძლევს ვიმუშაოთ პრომისების მასივებთან. მეთოდი Promise.all საშუალებას გვაძლევს შევასრულოთ კოდი ყველა პრომისის დასრულების შემდეგ, რომლებიც მას გადაეცა მასივის სახით, ხოლო მეთოდი Promise.race ელოდება მასივიდან პირველი პრომისის დასრულებას, გაუქმებდა დანარჩენებს.

ორივე მეთოდი თავის შედეგად აბრუნებს ახალ პრომისს. მეთოდის Promise.all შემთხვევაში ამ პრომისის შედეგი იქნება ყველა გადაცემული პრომისის შედეგების მასივი (შედეგების თანმიმდევრობა შეესაბამება პრომისების თანმიმდევრობას მასივში), ხოლო Promise.race - პირველი შესრულებული პრომისის შედეგი.

მოდით ვნახოთ პრაქტიკაში. დავუშვათ, რომ ჩვენ გვაქვს პრომისების მასივი:

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

მოდით Promise.all-ის საშუალებით ვიცადოთ ჩვენი მასივის ყველა პრომისის დასრულებას:

javascriptPromise.all(promises).then(function(res) {
  console.log(res); // გამოიტანს [1, 2, 3] - ყველა პრომისის შედეგები
});

ახლა კი Promise.race-ის საშუალებით ვიცადოთ პრომისებიდან პირველის დასრულებას:

javascriptPromise.race(promises).then(function(res) {
  console.log(res); // გამოიტანს 1 - პირველი შესრულებული პრომისის შედეგი
});

თუ მასივში ერთი არანაკლებ პრომისი უარყოფილი იქნება, მაშინ პრომისი შედეგით მაშინვე გადავა მდგომარეობაში rejected. ამიტომ წარმოქმნილი გამონაკლისი შეგვიძლია დავიჭიროთ ჩვეულებრივი, უკვე თქვენ მიერ შესწავლილი გზით, მაგალითად, catch-ის საშუალებით:

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

შექმენით ფუნქცია, რომელიც აბრუნებს პრომისს, რომლის შიგნით დაყენებულია შემთხვევითი დაყოვნება 1-დან 10 წამამდე. პრომისმა თავის შედეგად უნდა დააბრუნოს ეს დაყოვნება. ციკლის და თქვენი ფუნქციის საშუალებით შეავსეთ მასივი 10 პრომისით.

Задание 2

წინა ამოცანის პრომისების მასივის გამოყენებით გააკეთეთ ისე, რომ კონსოლში გამოიყვანოს პირველი შესრულებული პრომისის შედეგი.

Задание 3

წინა ამოცანის პრომისების მასივის გამოყენებით გააკეთეთ ისე, რომ კონსოლში გამოიყვანოს ყველა პრომისის შედეგების ჯამი.