Egyáltalán mik azok az ígéretek?
Az aszinkron kódot ígéretekkel lehet kezelni. Paraméterként egy végrehajtóként ismert függvényt vesznek fel. Az ígéret létrehozásakor a végrehajtó automatikusan aszinkron módon fut, és egy értéket ad vissza, ha az teljesül, ellenkező esetben az elutasítás okát adja vissza:
legyen example_promise = newPromise ( ( megoldani, elutasítani ) => {elhatározás ( 'Az ígéret teljesítve' ) ;
} ) ;
példa_ígéret. akkor ( r => konzol. log ( r ) ) ;
Az ígéretek aszinkron jellege:
legyen example_promise = newPromise ( ( megoldani, elutasítani ) => {
elhatározás ( 'Az ígéret teljesítve' ) ;
} ) ;
példa_ígéret. akkor ( r => konzol. log ( r ) ) ;
konzol. log ( '1,2,3...' ) ;
Hogyan kell használni a Promise.race() módszert?
Adjon át egy iterált ígéretet a Promise.race() metódusnak, és kapja meg a visszatérési értékét a változóban:
legyen prom1 = newPromise ( ( megoldani, elutasítani ) => {
setTimeout ( ( ) => elhatározás ( 'Az ígéret teljesítve' ) , 500 ) ;
} ) ;
legyen prom2 = newPromise ( ( megoldani, elutasítani ) => {
setTimeout ( ( ) => elutasít ( 'Az ígéretet nem lehetett teljesíteni' ) , 250 ) ;
} ) ;
hagyja hőm = Ígéret. verseny ( [ prom1, prom2 ] ) ;
hőm. fogás ( ok => konzol. log ( ok ) ) ;
Ebben a példában két ígéretünk volt. Az első ígéretet 500 ms után teljesítették, a másodikat pedig 250 másodperc múlva utasították el. Mivel a második ígéret volt az első, amelyet feloldottak vagy elutasítottak, a Promise.race() metódus adta vissza.
Ha a Promise.race() metódusnak átadott argumentum üres iterálható, akkor a metódus örökké függőben lévő ígéretet ad vissza:
hagyja hőm = Ígéret. verseny ( [ ] ) ;konzol. log ( hőm ) ;
Ha az iterálható argumentumnak van nem ígéretes értéke vagy olyan ígéret, amelyet már teljesítettek vagy elutasítottak, akkor a metódus a tömb első értékére számol:
legyen p1 = newPromise ( ( megoldani, elutasítani ) => {elhatározás ( 'P1 megoldva' ) ;
} ) ;
legyen p2 = newPromise ( ( megoldani, elutasítani ) => {
elhatározás ( 'P2 megoldva' ) ;
} ) ;
hagyja hőm = Ígéret. verseny ( [ p1, p2 ] ) ;
hőm. akkor ( érték => konzol. log ( érték ) ) ;
Promise.race() metódus ellenőrzi mind a megoldott, mind az elutasított ígéreteket. Ennek a metódusnak van egy másik alternatívája is, a Promise.any() metódus, amellyel egyszerűen ellenőrizhetjük az ígéretek teljesítését.
Következtetés
A Promise.race() metódust arra használjuk, hogy megkapjuk az első ígéretet, amelyet teljesítenek vagy elutasítanak az ígéretek iterálhatóságából. A legkorábban teljesített vagy elutasított ígéret a Promise.race() visszatérési értéke. Az írás mélyreható betekintést nyújtott a Promise.race() metódusba.