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 блогы орындалады.
Тиімді қолдану сценарийлері:
- Асинхронды операция үшін тайм-аутты жүзеге асыру.
- Бірнеше мүмкін дереккөзінен ең жылдам нәтижені алу.
- Бәсекелес асинхронды операцияларды тоқтату.