Junior
Обяснете какво е Promise.race и как се използва в JavaScript.
sobes.tech AI
Отговор от AI
Promise.race приема итеративен обект от обещания и връща ново обещание. Това ново обещание се разрешава или отхвърля веднага щом първото обещание в итеративния обект се разреши или отхвърли. Резултатът от новото обещание ще бъде резултатът или причината за отхвърляне на първото завършило обещание.
Използва се за:
- Избиране на най-бързия отговор сред няколко асинхронни операции.
- Реализиране на таймаути за асинхронни операции.
Пример за таймаут:
// Функция, която създава обещание, което се отхвърля след определено време
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout след ${ms}ms`));
}, ms);
});
}
// Асинхронна операция, която може да бъде бавна
function fetchData() {
return new Promise(resolve => {
// Имитация на дълга операция
setTimeout(() => {
resolve('Данните са успешно получени');
}, 2000); // Предположим, че тази операция отнема 2 секунди
});
}
// Използване на Promise.race за добавяне на таймаут към fetchData
Promise.race([
fetchData(), // Нашата операция
timeout(1000) // Таймаут от 1 секунда
])
.then(result => {
console.log(result); // Ще се изпълни, ако fetchData приключи преди таймаута
})
.catch(error => {
console.error(error.message); // Ще се изпълни, ако таймаутът се случи първи
});