
Continuons notre aventure des Observables, en nous arrĂȘtant sur les premiers operateurs que vous allez obligatoirement utiliser, Ă savoir : tap et map.
Découvrons les operators
Vous vous souvenez de la commande fetch de vanilla js ?
Pour rĂ©cupĂ©rer le json envoyĂ© depuis l’api, vous aviez du faire deux then :
- un premier pour rĂ©cupĂ©rer le retour de l’api
- un second pour parser le retour json et récupérer le javascript
Et bien c’est un peu de ce principe que nous allons nous inspirer pour expliquer les operators.
Intérargir dans le tuyau
Lors du premier article sur les observables, nous avions parlĂ© du principe du tuyau, qui est une bonne image pour comprendre ce qu’est l’observable.
Votre tuyau Ă©met des gouttes d’eau de maniĂšre continuelle ou non, tout dĂ©pend de l’Ă©metteur du tuyau.
OK, et si je vous disais que vous pouvez intĂ©rargir dans le tuyau avant mĂȘme de rĂ©cupĂ©rer l’eau pour l’arrosage ?
Ca serait pas mal non ?
L’arrivĂ©e du pipe
Depuis une Observable, vous allez pouvoir appliquer des operators grùce à la méthode : pipe.
Cette mĂ©thode porte bien son nom ! Nous allons pouvoir intĂ©ragir avec le tuyau de l’observable … grĂące aux operators.
Les operators
Ils ne sont que des fonctions pures, qui prennent une Observable en entrée et renvoie une observable en sortie.
Nous pouvons chaĂźner les operators, autant que nous le souhaitons, Ă l’intĂ©rieur de la fonction pipe.
Nos premiers exemples avec tap et map
L’opĂ©rateur tap
Il va vous permettre d’inspecter ce qui se passe dans le tuyau, sans l’altĂ©rer.
Attention, il est devenu obsolĂšte maintenant.
monObservable.pipe(tap(item => console.log(item)).subscribe();
L’opĂ©rateur map
VoilĂ notre premier operator intĂ©ressant ! Il va permettre de transformer ce qu’il y a dans le tuyau !
Imaginons que nous ayons un tuyau qui Ă©mette des entiers commençant par 0, nous allons pouvoir les faire commencer par 1, puis 2, puis .. đ
monOservable.pipe(map(item => item + 1)).subscribe(item => console.info(item));
Ce qui sera affiché ? Si notre observable commence à émettre à 0, on aura en fait 1.
Nous avons donc modifiĂ© ce qu’il y a dans le tuyau avant rĂ©ception !