Junior
რა არის Promise.race?
sobes.tech AI
პასუხი AI-სგან
Promise.race — ეს მეთოდია, რომელიც აბრუნებს ახალ პრომისს. ამ ახალ პრომისს განიხილავს ან განიხილება იგივე მნიშვნელობით (ან მიზეზით), როგორც პირველი გადაცემული და იტერირებადი ობიექტის (სხვადასხვა შემთხვევაში მასივის) პირველი დასრულებული პრომისი.
მუშაობის პრინციპები:
- შესავალი: იღებს იტერირებადი ობიექტს (მაგალითად, მასივის) პრომისებით.
- მოლოდინი: იწყებს "მოეჯიბრებას" ყველა პრომისის შორის.
- შედეგი: როგორც კი ნებისმიერი პრომისი იტერირებადი ობიექტიდან დასრულდება (ან განიხილება, ან უარყოფილი),
Promise.raceმყისვე დასრულდება იგივე შედეგით. - გაუთვალისწინებელი: ყველა სხვა პრომისის შედეგები, რომლებიც მოგვიანებით დასრულდებიან, სრულად იგნორირებულია.
გამოყენების მაგალითი:
// მაგალითი პრომის, რომელიც განიხილება 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 ბლოკი.
ტიპიური გამოყენების სცენარები:
- ასინქრონული ოპერაციის დროის გასაზღვრა.
- ყველაზე სწრაფი მონაცემთა წყაროს შედეგის მიღება რამდენიმე შესაძლო წყაროსგან.
- კონკურენტული ასინქრონული ოპერაციების შეჩერება.