Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 3279|Atbildi: 2

[Cits] RxJS par starpību starp firstValueFrom un lastValueFrom

[Kopēt saiti]
Publicēts 2024-8-6 11:19:02 | | | |
Prasības: projektam ir jāpārvērš novērojamie par solījumiem un jāgaida pabeigšana, un, izmantojot toPromise() metodi leņķa projektā, mājiens ir novecojis, un pēc tam ieteicams izmantot statiskās metodes firstValueFrom vai lastValueFrom.



Kāpēc novecot toPromise() metode?

Tā kā metodes nosaukums toPromise() nekad nenorāda, kuru emitēto vērtību Promise atrisinās, jo Observables laika gaitā var radīt vairākas vērtības. Pārvēršot par solījumu, iespējams, vēlēsities izvēlēties, vai vēlaties atlasīt pirmo saņemamo vērtību vai pēdējo vērtību. Lai atrisinātu visas šīs problēmas, mēs nolēmām novecot toPromise() un ieviest divas jaunas palīgfunkcijas konvertēšanai par solījumiem.

Vienkārši saprotietNovērojamie materiāli rada vairākas vērtībasUn tadSolījumi radīs tikai vienu vērtībuPēc tam daži lietotāji vēlas izmantot pirmo vērtību, bet daži lietotāji vēlas izmantot pēdējo vērtību, tāpēc tiek parādīti firstValueFrom un lastValueFrom. (Piezīme: toPromise() ir pēdējā vērtība, lai iegūtu novērojamos elementus

piemērs firstValueFrom

Iespējams, vēlēsities iegūt pirmo vērtību, kad tā pienāks, negaidot, kamēr Novērojamais tiks pabeigts, lai varētu izmantot firstValueFrom. firstValueFrom atrisinās solījumu ar pirmo vērtību, ko emitē novērojamais, un nekavējoties atteiksies no abonēšanas, lai saglabātu resursu. Ja novērojamais tiek pabeigts, neizstarojot nekādu vērtību, arī firstValueFrom tiks noraidīts ar EmptyError.



piemērs lastValueFrom

lastValueFrom ir gandrīz identisks toPromise(), kas nozīmē, ka tas parsēs ar pēdējo vērtību, kas sasniegta, kad novērojamais ir pabeigts, bet uzvedas citādi, kad novērojamais pabeidz, neizstarojot nevienu vērtību. Kad novērojamais tiek pabeigts bez izšaušanas, toPromise() veiksmīgi tiks atrisināts uz nedefinētu (tāpēc mainās atgriešanās tips), un lastValueFrom tiks noraidīts kā EmptyError. Tāpēc lastValueFrom atgriešanās tips ir Promise<T>, tāpat kā toPromise() RxJS 6.





Parsēšanas piemērs

RxJS intervāls (1000) ģenerē novērojamu, kas ik pēc 1000 milisekundēm (t.i., 1 sekundi) izstaro pakāpenisku skaitļu secību, sākot ar 0.

Tālāk .pipe(take(10)) ir operatoru ķēde, kas ierobežo novērojamo elementu skaitu. Šeit take(10) nozīmē, ka tiek ņemtas tikai pirmo 10 emitēto vērtības.

Detalizēti izskaidrosim šo izteiksmi:

intervāls (1000): izveidojiet novērojamu, kas izstaro skaitli ik pēc 1 sekundes. Numuru sērija sākas ar 0 un katru reizi palielinās par 1.

.pipe(take(10)): Izmantojiet .pipe() metodi, lai savienotu vairākus operatorus. Šeit mēs izmantojam take(10) operatoru, kas ierobežo novērojamo emitēt tikai pirmās 10 vērtības.

Pārbaudiet, vai nav kļūdu EmptyError

Kods ir šāds:


vai




Atsauce:Hipersaites pieteikšanās ir redzama.




Iepriekšējo:MySQL komandrindas vaicājuma rezultātu atgriešana ? jautājuma zīme
Nākamo:Angular 18 sērija (divdesmit divas) iepazīstina ar FontAwesome ikonu bibliotēku
 Saimnieks| Publicēts 2024-8-6 11:21:09 |
Ja leņķa HTTP izmantojat lastValueFrom vai firstValueFrom, tas ir ekvivalents, nav atšķirības, tas ir, jūs varat izmantot vienu no tiem.
 Saimnieks| Publicēts 2024-10-16 21:44:52 |
Ja atgriežaties no(), iespējams, saņemsiet izņēmumu bez elementiem secībā, lastValueFrom tagad izmanto konfigurācijas parametru kā otro parametru, un jūs varat norādīt noklusējuma vērtību, kas jāizstaro, kad novērojamais ir tukšs:

Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com