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. |