Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 3279|Répondre: 2

[Autre] RxJS à propos de la différence entre firstValueFrom et lastValueFrom

[Copié le lien]
Publié le 6-08-2024 à 11:19:02 | | | |
Exigences : Le projet doit convertir les Observables en Promesses et attendre l’achèvement, et lors de l’utilisation de la méthode toPromise() dans un projet Angular, l’indice a été obsolète, et il est alors recommandé d’utiliser les méthodes statiques firstValueFrom ou lastValueFrom.



Pourquoi déprécier la méthode toPromise() ?

Parce que le nom de la méthode toPromise() n’indique jamais quelle valeur émise la Promesse va résoudre, car les Observables peuvent produire plusieurs valeurs au fil du temps. Lors de la conversion en Promesse, vous pouvez vouloir choisir si vous souhaitez sélectionner la première valeur à arriver ou la dernière valeur. Pour résoudre tous ces problèmes, nous avons décidé de dévaloriser toPromise() et d’introduire deux nouvelles fonctions d’assistance pour convertir en promises.

Comprenez simplementLes observables produisent plusieurs valeursEt puisLes promesses ne donnent qu’une seule valeurEnsuite, certains utilisateurs veulent utiliser la première valeur, d’autres veulent utiliser la dernière valeur, donc firstValueFrom et lastValueFrom apparaissent. (Note : toPromise() est la dernière valeur pour obtenir les observables

firstValueFrom exemple

Vous pouvez vouloir obtenir la première valeur à son arrivée sans attendre que l’Observable se termine, afin de pouvoir utiliser firstValueFrom. firstValueFrom résoudra la Promesse avec la première valeur émise par l’Observable et se désinscrira immédiatement pour préserver la ressource. Si l’Observable se termine sans émettre de valeur, le premierValueFrom sera également rejeté avec un EmptyError.



exemple lastValueFrom

lastValueFrom est presque identique à toPromise(), ce qui signifie qu’il parse avec la dernière valeur atteinte lorsque l’Observable se termine, mais se comporte différemment lorsque l’Observable se termine sans émettre une seule valeur. Lorsque l’Observable se termine sans être déclenché, toPromise() résout avec succès en indéfini (donc le type de retour change), et lastValueFrom sera rejeté comme EmptyError. Par conséquent, le type de retour de lastValueFrom est <T>Promise, tout comme toPromise() dans RxJS 6.





Exemple d’analyse syntaxique

Dans RxJS, interval(1000) génère un observable qui émet une séquence incrémentale de nombres toutes les 1000 millisecondes (c’est-à-dire 1 seconde), à partir de 0.

Ensuite, .pipe(take(10)) est une chaîne d’opérateurs qui limite le nombre d’éléments que l’Observable émet. Ici, take(10) signifie que seules les valeurs des 10 premières émises sont prises.

Expliquons cette expression en détail :

intervalle(1000) : Créer un observable qui émet un nombre toutes les 1 seconde. La séquence numérique commence à 0 et augmente de 1 à chaque fois.

.pipe(take(10)) : Utilisez la méthode .pipe() pour connecter plusieurs opérateurs. Ici, nous utilisons l’opérateur take(10), qui limite l’observable à n’émettre que les 10 premières valeurs.

Tester les erreurs EmptyError

Le code est le suivant :


ou




Référence:La connexion hyperlientérée est visible.




Précédent:Retour de résultats de requête en ligne de commande MySQL ? point d’interrogation
Prochain:La série Angular 18 (vingt-deux) introduit la bibliothèque d’icônes FontAwesome
 Propriétaire| Publié le 6-08-2024 à 11:21:09 |
Si vous utilisez lastValueFrom ou firstValueFrom en HTTP Angular, c’est équivalent, il n’y a pas de différence, c’est-à-dire que vous pouvez utiliser l’un ou l’autre.
 Propriétaire| Publié le 16-10-2024 à 21:44:52 |
Si vous retournez of(), vous pouvez obtenir une exception no elements in sequence, lastValueFrom now prend le paramètre de configuration comme second paramètre, et vous pouvez spécifier la valeur par défaut à émettre lorsque l’observable est vide :

Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com