Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 3279|Válasz: 2

[Más] RxJS a firstValueFrom és lastValueFrom közötti különbségről

[Linket másol]
Közzétéve: 2024-8-6 11:19:02 | | | |
Követelmények: A projektnek át kell alakítania a Megfigyelhetőeket ígéretekre, és várnia kell a befejezésre, és amikor a toPromise() módszert Angular projektben használjuk, a tipp már elavult, ezért ajánlott a firstValueFrom vagy lastValueFrom statikus metódusok használatát.



Miért vonják vissza a toPromise() módszert?

Mert a toPromise() metódus neve sosem jelzi, hogy a Promise melyik kibocsátott értéket oldja meg, mert az Observables idővel több értéket is előállíthat. Ígéretre váltáskor érdemes lehet választani, hogy az első érkező értéket vagy az utolsót választod. Mindezen problémák megoldására úgy döntöttünk, hogy megszüntetjük a toPromise() funkciót, és két új segítő függvényt vezetünk be az ígéretekre történő átalakításhoz.

Egyszerűen értsd megMegfigyelhetők több értéket eredményeznekAztánAz ígéretek csak egy értéket eredményeznekEzután néhány felhasználó az első értéket akarja használni, mások pedig az utolsót, így firstValueFrom és lastValueFrom jelennek meg. (Megjegyzés: a toPromise() az utolsó érték, amely megfigyelhető adatokat kap

firstValueFrom példa

Érdemes lehet az első értéket megszerezni, amikor megérkezik, anélkül, hogy megvárnád a megfigyelhető befejezést, így használhatod a firstValueFrom-t. firstValueFrom megoldja az ígéretet az Observable által kibocsátott első értékkel, és azonnal lemond előfizetésről, hogy megőrizze az erőforrást. Ha az Observable érték nélkül fejeződik ki, a firstValueFrom is EmptyError esetén elutasításra kerül.



lastValuePélda

lastValueFrom szinte megegyezik a toPromise()-val, ami azt jelenti, hogy az utolsó értékkel parsíroz, amikor az Observable teljesül, de másként viselkedik, amikor a Observable befejeződik anélkül, hogy egyetlen értéket sem bocsát ki. Amikor az Observable befejeződik anélkül, hogy kiindulna, a toPromise() sikeresen megoldódik definíció nélküli állapotba (így a visszaküldés típusa változik), és a lastValueFrom EmptyError néven elutasítódik. Ezért a lastValueFrom visszatérési típusa Promise<T>, akárcsak a toPromise() RxJS 6-ban.





Példa elemzés

Az RxJS-ben az interval(1000) egy megfigyelhető rendszert generál, amely 1000 milliszekundumonként (azaz 1 másodpercenként) egy inkrementális számsorozatot bocsát ki, 0-tól kezdve.

Ezután a .pipe(take(10)) egy operátorlánc, amely korlátozza az Observable által kibocsátott elemek számát. Itt a take(10) azt jelenti, hogy csak az első 10 kibocsátott értéket veszik fel.

Magyarázzuk el részletesen ezt a kifejezést:

interval(1000): Létrehozz egy megfigyelhetőt, amely 1 másodpercenként számot bocsát ki. A számsorozat 0-ról indul, és minden alkalommal 1-gyel nő.

.pipe(take(10)): Használja a .pipe() metódust több operátor összekapcsolására. Itt a take(10) operátort használjuk, amely korlátozza az Observable képességét arra, hogy csak az első 10 értéket bocsátson ki.

EmptyError hibák tesztje

A kódex a következő:


vagy




Utalás:A hiperlink bejelentkezés látható.




Előző:MySQL parancssori lekérdezés eredményei visszaadnak ? kérdőjel
Következő:Az Angular 18-as sorozat (huszonkettő) bemutatja a FontAwesome ikonkönyvtárat
 Háziúr| Közzétéve: 2024-8-6 11:21:09 |
Ha a lastValueFrom vagy firstValueFrom a Angular HTTP-ben használod, az ekvivalens, nincs különbség, vagyis bármelyiket használhatod.
 Háziúr| Közzétéve: 2024-10-16 21:44:52 |
Ha vissza a () -t adod, akkor előfordulhat, hogy nem elem a sorozatban kivétel, a lastValueFrom most a konfigurációs paramétert veszi második paraméterként, és megadhatod az alapértelmezett értéket, amit kibocsátasz, amikor a megfigyelhető üres:

Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com