JavaScript Promise.race() Metode

Javascript Promise Race Metode



Promise.race()-metoden er en innebygd metode for JavaScript som tar en gjentakelse av løfter som et argument og returnerer det første løftet som er løst eller avvist. Promise.race()-metoden vil enten returnere oppfyllelsesverdien eller årsaken til avvisningen. Iterables er objekter som kan løkkes gjennom, for eksempel Arrays, Strings og Maps.

Hva er løfter uansett?

Asynkron kode kan håndteres med løfter. De tar en funksjon kjent som eksekveren som en parameter. Når et løfte er opprettet, kjører eksekutøren automatisk asynkront og returnerer en verdi i tilfelle den blir oppfylt, ellers returnerer den årsaken til avvisningen:

la eksempel_løfte = nytt løfte ( ( løse, avvise ) => {
Løse ( 'Løftet er løst' ) ;
} ) ;

eksempel_løfte. deretter ( r => konsoll. Logg ( r ) ) ;







Løftenes asynkrone natur:



la eksempel_løfte = nytt løfte ( ( løse, avvise ) => {
Løse ( 'Løftet er løst' ) ;
} ) ;

eksempel_løfte. deretter ( r => konsoll. Logg ( r ) ) ;
konsoll. Logg ( '1,2,3...' ) ;



Hvordan bruker jeg Promise.race()-metoden?

Send en gjentakelig av løfter til Promise.race()-metoden og få returverdien i variabel:





la skoleball1 = nytt løfte ( ( løse, avvise ) => {
setTimeout ( ( ) => Løse ( 'Løftet er løst' ) , 500 ) ;
} ) ;

la skoleball2 = nytt løfte ( ( løse, avvise ) => {
setTimeout ( ( ) => avvise ( 'Løftet kunne ikke løses' ) , 250 ) ;
} ) ;

la temp = Love. løp ( [ skoleball1, skoleball2 ] ) ;

temp. å fange ( Årsaken => konsoll. Logg ( Årsaken ) ) ;

I dette eksemplet hadde vi to løfter. Det første løftet ble løst etter 500 ms og det andre løftet ble avvist like etter 250 sekunder. Siden det andre løftet var det første som enten ble løst eller avvist, ble det returnert av Promise.race()-metoden.



Hvis argumentet som sendes til Promise.race()-metoden er en tom iterabel, vil metoden returnere et evig ventende løfte:

la temp = Love. løp ( [ ] ) ;

konsoll. Logg ( temp ) ;

Hvis argumentet iterable har noen ikke-løftede verdier eller løfter som allerede er oppfylt eller avvist, vil metoden nøye seg med den første verdien i matrisen:

la p1 = nytt løfte ( ( løse, avvise ) => {
Løse ( 'P1 er løst' ) ;
} ) ;

la p2 = nytt løfte ( ( løse, avvise ) => {
Løse ( 'P2 er løst' ) ;
} ) ;

la temp = Love. løp ( [ p1,p2 ] ) ;
temp. deretter ( verdi => konsoll. Logg ( verdi ) ) ;

Promise.race() metodesjekk for både løste og avviste løfter. Denne metoden har også et annet alternativ som er Promise.any()-metoden som kan brukes til å bare se etter oppfylte løfter.

Konklusjon

Promise.race()-metoden brukes for å få det første løftet som enten er oppfylt eller avvist fra en gjentakelig av løfter. Løftet som blir oppfylt eller avvist tidligst er returverdien til Promise.race(). Oppskriften ga en dyptgående innsikt i Promise.race()-metoden.