Junior
Promise.race nima?
sobes.tech AI
AIdan javob
Promise.race — bu metod, u which qaytadigan yangi va'da. Bu yangi va'da, berilgan iteratsiya ob'ektining (odatda massiv) birinchi yakunlangan va'dasi bilan bir xil qiymat (yoki sabab) bilan hal qilinadi yoki rad etiladi.
Ishlash prinsiplari:
- Kirish: Bir iterable ob'ekt (masalan, massiv) va'dalarini qabul qiladi.
- Kutish: Barcha va'dalar o'rtasida "musobaqa" boshlanadi.
- Natija: Qachonki har qanday va'da (yoki hal qilinadigan yoki rad etilgan) yakunlangan bo'lsa,
Promise.racedarhol aynan shu natija bilan yakunlanadi. - E'tiborsizlik: Keyinchalik yakunlangan boshqa va'dalarning natijalari to'liq e'tiborsiz qoldiriladi.
Foydalanish misoli:
// 1 sekundda hal qilinadigan va'da misoli
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Birinchi'), 1000));
// 500 millisekundda hal qilinadigan va'da misoli
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Ikkinchi'), 500));
// 300 millisekundda rad etiladigan va'da misoli
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Xato')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // 'Xato' chiqaradi
})
.catch((error) => {
console.error(error.message); // Xatoni qayta ishlash
});
Bu misolda, promise3 birinchi yakunlanadi (rad etiladi), shuning uchun Promise.race xato bilan yakunlanadi va .catch bloki bajariladi. Agar promise2 birinchi yakunlangan bo'lsa (masalan, 10 ms da), unda Promise.race 'Ikkinchi' bilan hal qilinadi va .then bloki bajariladi.
Tavsiya etilgan foydalanish holatlari:
- Asinxron operatsiya uchun timeoutni amalga oshirish.
- Bir nechta mumkin bo'lgan manbalardan eng tez natijani olish.
- Konkurent asinxron operatsiyalarni bekor qilish.