JavaScript Promise.race() metode

Javascript Promise Race Metode



Promise.race()-metoden er en indbygget JavaScript-metode, som tager en iterable af løfter som et argument og returnerer det første løfte, som er løst eller afvist. Promise.race()-metoden returnerer enten opfyldelsesværdien eller årsagen til afvisningen. Iterables er objekter, som kan sløjfes igennem, såsom Arrays, Strings og Maps.

Hvad er løfter overhovedet?

Asynkron kode kan håndteres med løfter. De tager en funktion kendt som udføreren som en parameter. Når et løfte er oprettet, kører eksekveren automatisk asynkront og returnerer en værdi, hvis den bliver opfyldt, ellers returnerer den årsagen til afvisningen:

lad eksempel_love = nyt løfte ( ( løse, afvise ) => {
beslutte ( 'Løftet er blevet løst' ) ;
} ) ;

eksempel_løfte. derefter ( r => konsol. log ( r ) ) ;







Asynkron karakter af løfter:



lad eksempel_love = nyt løfte ( ( løse, afvise ) => {
beslutte ( 'Løftet er blevet løst' ) ;
} ) ;

eksempel_løfte. derefter ( r => konsol. log ( r ) ) ;
konsol. log ( '1,2,3...' ) ;



Hvordan bruger man Promise.race() metoden?

Send en iterabel af løfter til Promise.race()-metoden og få dens returværdi i variabel:





lad bal1 = nyt løfte ( ( løse, afvise ) => {
sætTimeout ( ( ) => beslutte ( 'Løftet er blevet løst' ) , 500 ) ;
} ) ;

lad bal2 = nyt løfte ( ( løse, afvise ) => {
sætTimeout ( ( ) => afvise ( 'Løftet kunne ikke løses' ) , 250 ) ;
} ) ;

lad temp = Løfte. race ( [ bal1, bal2 ] ) ;

Midlertidig. fangst ( grund => konsol. log ( grund ) ) ;

I dette eksempel havde vi to løfter. Det første løfte blev løst efter 500 ms, og det andet løfte blev afvist lige efter 250 sekunder. Da det andet løfte var det første, der enten blev løst eller afvist, blev det returneret af Promise.race()-metoden.



Hvis argumentet videregivet til Promise.race() metoden er en tom iterabel, vil metoden returnere et evigt afventende løfte:

lad temp = Løfte. race ( [ ] ) ;

konsol. log ( Midlertidig ) ;

Hvis argumentet iterable har nogen ikke-løftede værdier eller løfter, som allerede er blevet opfyldt eller afvist, vil metoden nøjes med den første værdi i arrayet:

lad p1 = nyt løfte ( ( løse, afvise ) => {
beslutte ( 'P1 er blevet løst' ) ;
} ) ;

lad p2 = nyt løfte ( ( løse, afvise ) => {
beslutte ( 'P2 er blevet løst' ) ;
} ) ;

lad temp = Løfte. race ( [ p1, p2 ] ) ;
Midlertidig. derefter ( værdi => konsol. log ( værdi ) ) ;

Promise.race() metodetjek for både løste og afviste løfter. Denne metode har også et andet alternativ, som er Promise.any() metoden, som kan bruges til bare at tjekke for de opfyldte løfter.

Konklusion

Promise.race() metoden bruges til at få det første løfte, der enten er opfyldt eller afvist fra en iterabel af løfter. Det løfte, der er opfyldt eller afvist tidligst, er returværdien af ​​Promise.race(). Skrivningen gav dybdegående indsigt i Promise.race()-metoden.