Que sont les méthodes de tuyau et de robinet dans le didacticiel angulaire? [fermé]

130

Je suis le tutoriel sur https://angular.io et j'ai du mal à trouver de la documentation; spécifiquement pour les méthodes pipeet tap. Je ne trouve rien sur https://angular.io ou http://reactivex.io/rxjs/ .

Je comprends cela pipeet taples deux méthodes sont-elles Observableimportées de RxJS, n'est-ce pas? Que sont-ils censés faire?

Ces méthodes font-elles partie d'Angular? Que font ces deux méthodes?

Ben Rubin
la source
57
Je trouve étrange que les utilisateurs posent des questions appropriées, reçoivent une réponse appropriée, et pourtant pour les mods ne savent pas ce que demande OP: D - pourquoi diable est-ce "hors-sujet"?
Paul Strupeikis

Réponses:

109

Vous avez raison, la documentation manque de ces méthodes. Cependant, lorsque j'ai creusé dans le référentiel rxjs, j'ai trouvé de bons commentaires sur tap (trop long à coller ici) et les opérateurs de tuyaux :

  /**
   * Used to stitch together functional operators into a chain.
   * @method pipe
   * @return {Observable} the Observable result of all of the operators having
   * been called in the order they were passed in.
   *
   * @example
   *
   * import { map, filter, scan } from 'rxjs/operators';
   *
   * Rx.Observable.interval(1000)
   *   .pipe(
   *     filter(x => x % 2 === 0),
   *     map(x => x + x),
   *     scan((acc, x) => acc + x)
   *   )
   *   .subscribe(x => console.log(x))
   */

En bref:

Tuyau : utilisé pour assembler des opérateurs fonctionnels dans une chaîne. Avant de pouvoir le faire observable.filter().map().scan(), mais comme chaque opérateur RxJS est une fonction autonome plutôt qu'une méthode Observable, nous devons pipe()créer une chaîne de ces opérateurs (voir l'exemple ci-dessus).

Tap : peut effectuer des effets secondaires avec les données observées mais ne modifie en aucune façon le flux. Anciennement appelé do(). Vous pouvez y penser comme si observable était un tableau au fil du temps, alors tap()serait un équivalent à Array.forEach().

Daniel Kucal
la source
4
Merci pour la réponse et les liens. Une partie de mon problème est que je suis nouveau dans Angular, et je ne suis pas sûr des méthodes qui font partie du noyau JavaScript ou Node.js ou RxJS ou Angular. Votre réponse m'a aidé à clarifier cela. Je vous remercie.
Ben Rubin
3
@BenRubin Je vous recommande de commencer par apprendre correctement le JS natif avant de commencer à apprendre les outils. Il sera beaucoup plus facile de comprendre les outils et ce qu'ils font réellement (et de savoir quelles parties sont natives par rapport à l'outil).
Magnus Eriksson
21
depuis la version 5.5 et l'introduction des opérateurs pipeable (autrefois appelés louables), dorebaptisés tap... Bref, c'est un gâchis. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
Luca
3
filterfonctionne exactement comme Array.filter- ne conserve que les valeurs remplissant la règle (dans ce cas divisibles par 2); map(encore une fois Array.map) change chaque valeur (dans ce cas l'ajoute à lui-même); scanest le plus intéressant et voici une belle explication: learnrxjs.io/operators/transformation/scan.html
Daniel Kucal
1
ressemble à l'analyse est réduite
latj