Was sind Pipe- und Tap-Methoden im Angular-Tutorial? [geschlossen]

128

Ich folge dem Tutorial unter https://angular.io und habe Probleme, Dokumentation zu finden. speziell für die Methoden pipeund tap. Ich kann auf https://angular.io oder http://reactivex.io/rxjs/ nichts finden .

Mein Verständnis ist das pipeund tapsind beide Methoden von Observable, die aus RxJS importiert werden, richtig? Was sollen sie tun?

Sind diese Methoden Teil von Angular? Was machen diese beiden Methoden?

Ben Rubin
quelle
55
Ich finde es seltsam, wenn Benutzer richtige Fragen stellen, eine richtige Antwort erhalten und doch für die Mods keine Ahnung haben, was OP fragt: D - warum zum Teufel ist dieses "Off-Topic"?
Paul Strupeikis

Antworten:

106

Sie haben Recht, in der Dokumentation fehlen diese Methoden. Als ich mich jedoch in das Repository von rxjs eingegraben habe, habe ich nette Kommentare zu tap (zu lang zum Einfügen hier) und Pipe- Operatoren gefunden:

  /**
   * 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))
   */

In Kürze:

Rohr : Zum Zusammenfügen von Funktionsoperatoren zu einer Kette. Bevor wir dies tun konnten observable.filter().map().scan(), müssen wir pipe()eine Kette dieser Operatoren erstellen, da jeder RxJS-Operator eine eigenständige Funktion und keine Observable-Methode ist (siehe Beispiel oben).

Tippen : Kann mit beobachteten Daten Nebenwirkungen verursachen, ändert den Stream jedoch in keiner Weise. Früher angerufen do(). Sie können sich vorstellen, dass beobachtbar ein Array im Laufe der Zeit wäre, dann tap()wäre es ein Äquivalent zu Array.forEach().

Daniel Kucal
quelle
4
Vielen Dank für die Antwort und die Links. Ein Teil meines Problems ist, dass ich neu in Angular bin und nicht sicher bin, welche Methoden Teil von JavaScript oder Node.js oder RxJS oder Angular sind. Ihre Antwort hat mir geholfen, das zu klären. Danke dir.
Ben Rubin
3
@BenRubin Ich würde empfehlen, dass Sie zunächst natives JS richtig lernen, bevor Sie mit dem Erlernen der Tools beginnen. Dadurch wird es viel einfacher, die Werkzeuge zu verstehen und zu verstehen, was sie tatsächlich tun (und zu wissen, welche Teile im Vergleich zum Werkzeug nativ sind).
Magnus Eriksson
20
seit 5.5 und der Einführung von pipeable (einst als vermietbar bezeichnet) Operatoren, doumbenannt in tap... Kurz gesagt, es ist ein Chaos. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
Luca
3
filterfunktioniert genauso wie Array.filter- hält nur Werte, die die Regel erfüllen (in diesem Fall durch 2 teilbar); map(wieder wie Array.map) ändert jeden Wert (in diesem Fall fügt er sich selbst hinzu); scanist am interessantesten und hier ist eine schöne Erklärung: learnrxjs.io/operators/transformation/scan.html
Daniel Kucal
1
sieht aus wie Scan ist reduziert
latj