Junior
Promise.race деген эмне жана ал JavaScriptте кандай колдонулат экенин түшүндүрүңүз.
sobes.tech AI
AIден жооп
Promise.race кабыл алат iterable объектуусун убада жана жаңы убада кайтарат. Бул жаңы убада, биринчи убада ишке ашкан же четке кагылганда, ишке ашырылат же четке кагылат. Жаңы убададын жыйынтыгы биринчи аяктагандан кийин алынган жыйынтык же себеп болот.
Колдонулат:
- Бир нече асинхрондук операциялардын ичинен эң тез жоопту тандоо.
- Асинхрондук операциялар үчүн убакыт чектөөлөрүн ишке ашыруу.
Мисал убакыт чектөө:
// Белгилүү бир убакыттан кийин четке кагылган убада түзүүчү функция
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Азыраак болушу мүмкүн болгон асинхрондук операция
function fetchData() {
return new Promise(resolve => {
// Узак операциянын симуляциясы
setTimeout(() => {
resolve('Маалымат ийгиликтүү алынды');
}, 2000); // Бул операция 2 секундду талап кылат деп эсептейли
});
}
// fetchDataга убакыт чектөө кошуу үчүн Promise.race колдонуу
Promise.race([
fetchData(), // Биздин операция
timeout(1000) // 1 секунд убакыт чектөө
])
.then(result => {
console.log(result); // Эгер fetchData убакыттан эрте аякса ишке ашат
})
.catch(error => {
console.error(error.message); // Эгер биринчи убакыт чектөө болсо ишке ашат
});