Observables
Observables
L’Observable est le type d’objet principal de RxJS. Nous pouvons l’« écouter », ou l’« observer », pour réagir à ses émissions. Pour écouter ces émissions, il faut appeler la fonction subscribe() de l’Observable à l’endroit où vous pouvez accéder à la valeur émise. Il est impossible d’invoquer l’événement ou le changement de valeur à l’aide d’un simple Observable. Il faut le comprendre comme un objet en « lecture seule ». Pour cette raison, il est généralement conseillé d’exposer les Observables lorsque vous ne souhaitez pas que d’autres composants de l’application invoquent des événements, c’est-à-dire, quand vous voulez qu’ils écoutent seulement.
service.ts | |
---|---|
1 2 3 4 5 6 |
|
of
de la librairie rxjs permet de créer un observable à partir d'une valeur
component.ts | |
---|---|
1 2 3 4 5 6 7 |
|
Dans l'exemple ci-dessus, nous avons un service qui retourne un observable de type Date. Dans le composant, nous avons appelé la méthode getDateJour
du service et nous avons souscrit à l'observable retourné. Lorsque la date est émise, nous la recevons dans la fonction de rappel de la méthode subscribe
et nous l'affichons dans la console.
A savoir
Dans cet exemple, si on ne s'abonne pas à l'observable, la date ne sera pas émise. C'est le principe de la programmation réactive. Les observables ne sont pas exécutés tant qu'ils ne sont pas écoutés. Il faut aussi penser à se désabonner de l'observable pour éviter les fuites de mémoire. Pour cela, on peut utiliser la méthode unsubscribe
de l'observable.
Désabonnement de l'observable grâce au hook ngOnDestroy
du composant.
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
Operators
Les opérateurs sont des fonctions pures qui permettent de manipuler les valeurs émises par un observable. Ils sont utilisés pour effectuer des opérations sur les valeurs émises par un observable et retourner un nouvel observable. Il existe de nombreux opérateurs dans RxJS, mais nous allons voir les plus couramment utilisés.
Subject
Un Subject est un type d'Observable qui permet de publier des valeurs à plusieurs observateurs. Il est possible de publier des valeurs à partir de l'extérieur de l'observable en appelant la méthode next
de l'observable. Cela permet de transformer un Observable en un objet en lecture/écriture.
Un Subject est un observable : on peut s'abonner à un Subject comme à n'importe quel autre observable. En interne, s'abonner à un Subject n'invoque pas une nouvelle exécution qui délivre des valeurs, Il enregistre simplement l'observateur dans une liste d'observateurs (Qui seront tous prévenu quand une nouvelle donnée se transmise).
Un Subject est un observateur : on peut transmettre une nouvelle valeur avec sa méthode next. Faites simplement next(value) et elle sera transmise à tous les observateurs enregistrés.
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
A savoir
Un Subject n'a pas de valeur initiale. Il ne publie que les valeurs qui lui sont envoyées par la méthode next
.
BehaviorSubject
Un BehaviorSubject est un type de Subject qui a une valeur initiale. Il est similaire à un Subject, mais il a une propriété supplémentaire qui est la valeur actuelle. Il est nécessaire de lui fournir une valeur initiale lors de sa création.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|