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