Junior
Mi az a Promise.race?
sobes.tech MI
Válasz az MI-től
Promise.race — ez egy módszer, amely egy új ígéretet (promise) ad vissza. Ez az új ígéret akkor oldódik meg vagy utasítódik el ugyanazzal az értékkel (vagy okkal), mint az első ígéret a megadott iterálható objektumból (általában tömb), amely befejeződött.
Működési elvek:
- Bemenet: Elfogad egy iterálható objektumot (például tömböt) ígéretekkel.
- Várakozás: Elkezd egy "versenyt" minden ígéret között.
- Eredmény: Amint bármelyik ígéret az iterálható objektumból befejeződik (legyen az megoldott vagy elutasított), a
Promise.raceazonnal befejeződik ugyanazzal az eredménnyel. - Figyelmen kívül hagyás: Minden más, később befejeződő ígéret eredményei teljesen figyelmen kívül maradnak.
Használati példa:
// Példa egy ígéretre, amely 1 másodperc múlva oldódik meg
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Első'), 1000));
// Példa egy ígéretre, amely 500 milliszekundum múlva oldódik meg
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Második'), 500));
// Példa egy ígéretre, amely 300 milliszekundum múlva elutasításra kerül
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Hiba')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // 'Hiba' fog megjelenni
})
.catch((error) => {
console.error(error.message); // A hiba kezelése 'Hiba'
});
Ebben a példában a promise3 lesz az első, amely befejeződik (elutasítva), így a Promise.race hibával fejeződik be, és a .catch blokk fut le. Ha a promise2 lenne az első (például 10 ms alatt), akkor a Promise.race az értékkel 'Második' oldódna meg, és a .then blokk futna le.
Tipikus felhasználási forgatókönyvek:
- Időkorlát beállítása egy aszinkron művelethez.
- A leggyorsabb adatforrás eredményének megszerzése több közül.
- Aszinkron műveletek versengésének megszakítása.