Utilisation de filter - RxJs et les Observables

rxjs observable decouverte

Maintenant que nous avons saisi l’intérêt des operators de RxJs avec map et tap, voyons troisième, qui est très pratique pour sélectionner ce qui est réellement émis en résultat dans notre pipe : filter.

Bien comprendre l’Observable

Rappelons de nouveau ce qu’est une observable : c’est un tuyau d’émission où un souscriveur va attendre qu’on lui émette des informations.

Vu que l’on peut émettre à l’infini, au rythme que l’on souhaite, on va recevoir des données lorsque l’on souscrit que l’on aimerait filtrer.

La tentation du if

Lorsque l’on commence à utiliser les Observable, et vu que l’on a appris qu’il faut subscribe pour commencer à recevoir les émissions, on va acquérir ce réflexe.
Et donc, on va écrire tout le code de traitement dans le subscribe.

C’est une bonne première méthode, ET en même temps ce n’est pas très Reactive, très fonctionnel.

Penser fonction – Le principe des Observables et du filter

En fait, les operators ne sont que des fonctions, des fonctions pures de projection.

Donc l’idée ici, quand on va vouloir filtrer les émissions c’est surtout de bien utiliser les operators, et donc de préparer les données que l’on souhaite recevoir avec le subscribe dans le pipe !

Un exemple sans filter

 

Nous voulons ici filtrer les wookies uniquement supérieurs à 3 mètres (300 cm)


const wookies$ = from([ { surname: 'Chewie', size: 250 }, { surname: 'Aktar', size: 350 }, { surname: 'Chewa', size: 290 } ]);
wookies$.subscribe(item => {
if (item.size > 300) {
this.wookiesTresGrands.push(item);
}
});

 

Le même exemple avec filter


const wookies$ = from([ { surname: 'Chewie', size: 250 }, { surname: 'Aktar', size: 350 }, { surname: 'Chewa', size: 290 } ]);
wookies$.pipe(
filter(item => item.size > 300)
).subscribe(item => this.wookiesTresGrands.push(item));

 

Pour précision, le from permet de construire une Observable avec une émission pour chaque élément dans un tableau.

 

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639