Sobes.tech
Junior

რა არის Promise.race?

sobes.tech AI

პასუხი AI-სგან

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

მუშაობის პრინციპები:

  1. შესავალი: იღებს იტერირებადი ობიექტს (მაგალითად, მასივის) პრომისებით.
  2. მოლოდინი: იწყებს "მოეჯიბრებას" ყველა პრომისის შორის.
  3. შედეგი: როგორც კი ნებისმიერი პრომისი იტერირებადი ობიექტიდან დასრულდება (ან განიხილება, ან უარყოფილი), Promise.race მყისვე დასრულდება იგივე შედეგით.
  4. გაუთვალისწინებელი: ყველა სხვა პრომისის შედეგები, რომლებიც მოგვიანებით დასრულდებიან, სრულად იგნორირებულია.

გამოყენების მაგალითი:

// მაგალითი პრომის, რომელიც განიხილება 1 წამში
const promise1 = new Promise((resolve) => setTimeout(() => resolve('პირველი'), 1000));

// მაგალითი პრომის, რომელიც განიხილება 500 მილიწამში
const promise2 = new Promise((resolve) => setTimeout(() => resolve('მეორე'), 500));

// მაგალითი პრომის, რომელიც უარყოფილია 300 მილიწამში
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('შეცდომა')), 300));

Promise.race([promise1, promise2, promise3])
  .then((value) => {
    console.log(value); // გამოიტანს 'შეცდომა'
  })
  .catch((error) => {
    console.error(error.message); // გამოიტანს 'შეცდომა'
  });

ამ მაგალითში promise3 დასრულდება პირველივე (უარყოფით), ამიტომ Promise.race დასრულდება შეცდომით და შესრულდება .catch ბლოკი. თუ promise2 დასრულდებოდა პირველზე (მაგალითად, 10 მს-ში), მაშინ Promise.race განიხილებოდა მნიშვნელობით და შესრულდებოდა .then ბლოკი.

ტიპიური გამოყენების სცენარები:

  • ასინქრონული ოპერაციის დროის გასაზღვრა.
  • ყველაზე სწრაფი მონაცემთა წყაროს შედეგის მიღება რამდენიმე შესაძლო წყაროსგან.
  • კონკურენტული ასინქრონული ოპერაციების შეჩერება.