Opérateurs RxJS
Les opérateurs Rxjs sont des fonctions 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.
Ils s'utilisent avec la méthode pipe
de l'observable.
component.ts | |
---|---|
1 2 3 4 5 6 7 |
|
Pipe est une méthode qui permet de combiner plusieurs opérateurs opérateurs pour effectuer des opérations sur les valeurs émises par un observable.
map
L'opérateur map
permet de transformer les valeurs émises par un observable. Il prend une fonction de transformation en argument et retourne un nouvel observable qui émet les valeurs transformées.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
permet de passer de la date du format "2023-08-25T08:00:00.000Z" à "Fri Aug 25 2023" grâce au map
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
permets de transformer la date en majuscule grâce au map
filter
L'opérateur filter
permet de filtrer les valeurs émises par un observable. Il prend une fonction de prédicat en argument et retourne un nouvel observable qui émet les valeurs qui satisfont le prédicat.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
component.ts | |
---|---|
1 2 3 4 5 6 7 8 |
|
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur filter
pour filtrer les nombres pairs émis par l'observable.
tap
L'opérateur tap
permet d'effectuer des actions sur les valeurs émises par un observable sans les transformer. Il prend une fonction de rappel en argument et retourne un nouvel observable qui émet les mêmes valeurs que l'observable d'origine.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur tap
pour afficher les nombres émis par l'observable sans les transformer.
take
L'opérateur take
permet de limiter le nombre de valeurs émises par un observable. Il prend un nombre entier en argument et retourne un nouvel observable qui émet les n
premières valeurs de l'observable d'origine.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
component.ts | |
---|---|
1 2 3 4 5 6 7 8 |
|
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur take
pour limiter le nombre de valeurs émises par l'observable à 3.
takeUntil
Avec takeUntil
, l’observable principal arrête d’émettre lorsque l’observable secondaire commence. Ça peut être un timer, un Subject déclenché manuellement ou une autre source d’événements.
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
source émet une valeur chaque secondes. timer$ émet une valeur après 5 secondes.
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur takeUntil
pour arrêter l'émission des valeurs de l'observable source
après 5 secondes.
distinctUntilChanged
L'opérateur distinctUntilChanged
permet de filtrer les valeurs émises par un observable pour qu'il n'émette que les valeurs qui sont différentes de la valeur précédente. Il retourne un nouvel observable qui émet les valeurs qui sont différentes de la valeur précédente.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
component.ts | |
---|---|
1 2 3 4 5 6 7 8 |
|
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur distinctUntilChanged
pour filtrer les valeurs émises par l'observable pour qu'il n'émette que les valeurs qui sont différentes de la valeur précédente.
switchMap
L'opérateur switchMap
permet de transformer les valeurs émises par un observable en un autre observable. Il prend une fonction de transformation en argument et retourne un nouvel observable qui émet les valeurs transformées.
service.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
component.ts | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|