Junior
Paaiškinkite, kas yra Promise.race ir kaip jis naudojamas JavaScript.
sobes.tech AI
Atsakymas iš AI
Promise.race priima iteruojamą objektą pažadų ir grąžina naują pažadą. Šis naujas pažadas išsprendžiamas arba atmetamas, kai pirmas pažadas iš iteruojamo objekto yra išspręstas arba atmestas. Naujo pažado rezultatas bus pirmojo užbaigto pažado rezultatas arba priežastis.
Naudojama:
- Pasirinkti greičiausią atsakymą iš kelių asinchroninių operacijų.
- Įgyvendinti laiko limitus asinchroninėms operacijoms.
Pavyzdys su laiko limitu:
// Funkcija, kuri sukuria pažadą, kuris atmestas po tam tikro laiko
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Asinchroninė operacija, kuri gali būti lėta
function fetchData() {
return new Promise(resolve => {
// Ilgos operacijos simuliacija
setTimeout(() => {
resolve('Duomenys sėkmingai gauti');
}, 2000); // Tarkime, ši operacija trunka 2 sekundes
});
}
// Naudojant Promise.race pridėti laiko limitą prie fetchData
Promise.race([
fetchData(), // Mūsų operacija
timeout(1000) // 1 sekundės laiko limitas
])
.then(result => {
console.log(result); // Bus iškviečiama, jei fetchData baigsis iki laiko limito
})
.catch(error => {
console.error(error.message); // Bus iškviečiama, jei pirmas įvykis bus laiko limitas
});