Angularチュートリアルのパイプおよびタップメソッドとは何ですか?[閉まっている]


128

私はhttps://angular.ioのチュートリアルに従っていますが、ドキュメントを見つけるのに問題があります。特にメソッドpipetaphttps://angular.ioまたはhttp://reactivex.io/rxjs/で何も見つかりません。

私の理解はそれでpipeあり、RxJSからインポートされてtapいるの両方の方法はObservable正しいですか?彼らは何をすることになっていますか?

これらのメソッドはAngularの一部ですか?これらの2つの方法は何をしますか?


55
ユーザーが適切な質問をし、適切な回答を受け取ったときに奇妙なことに気づきますが、MODに対してOPが何を求めているのかがわかりません。
Paul Strupeikis、

回答:


106

そうです、ドキュメントにはそれらのメソッドが欠けています。しかし、rxjsリポジトリを掘り下げると、tap(ここでは貼り付けるには長すぎます)およびパイプオペレーターに関する素晴らしいコメントが見つかりました。

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

簡単に言えば:

パイプ:関数演算子をチェーンにつなぎ合わせるために使用されます。できる前にobservable.filter().map().scan()、すべてのRxJS演算子はObservableのメソッドではなくスタンドアロン関数であるため、pipe()これらの演算子のチェーンを作成する必要があります(上記の例を参照)。

Tap:観測されたデータで副作用を実行できますが、ストリームを変更しません。旧称do()。observableが時間の経過に伴う配列であると考えると、とtap()同等になりArray.forEach()ます。


4
回答とリンクありがとうございます。私の問題の一部は、Angularを初めて使用することであり、どのメソッドがコアJavaScriptまたはNode.jsまたはRxJSまたはAngularの一部であるかがわかりません。あなたの答えは私がそれを明確にするのに役立ちました。ありがとうございました。
ベン・ルービン

3
@BenRubinツールの学習を開始する前に、ネイティブJSを適切に学習することから始めることをお勧めします。これにより、ツールとそれが実際に行うことを理解しやすくなります(また、ツールとネイティブのパーツの違いを知ることができます)。
マグナスエリクソン

20
5.5以降、名前doが変更されてパイプライン(以前はlettableと呼ばれていました)演算子が導入されましたtapgithub.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
Luca

3
filter同様に機能しますArray.filter-ルールを満たす値のみを保持します(この場合、2で割り切れる)。map(再びのようにArray.map)すべての値を変更します(この場合はそれ自体に追加します); scan最も興味深く、ここに良い説明があります:learnrxjs.io/operators/transformation/scan.html
Daniel Kucal

1
スキャンが減少しているように見えます
latj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.