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