1. ホーム
  2. angular

[解決済み] RxJSのpipeとは何ですか?

2022-03-06 22:36:13

質問

基本的な考え方はできているつもりですが、不明な点があります。

というわけで、一般的にはこのように Observable :

observable.subscribe(x => {

})

データをフィルタリングしたい場合は、これを使うことができます。

import { first, last, map, reduce, find, skipWhile } from 'rxjs/operators';
observable.pipe(
    map(x => {return x}),
    first()
    ).subscribe(x => {

})

こんなこともできるんです。

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/first';

observable.map(x => {return x}).first().subscribe(x => {

})

そこで質問なのですが。

  1. 何が違うのですか?
  2. 違いがないのであれば、なぜ、この機能 pipe は存在するのでしょうか?
  3. なぜこれらの関数は異なるインポートを必要とするのですか?

解決方法は?

pipeable"(旧"lettable")演算子は 現在推奨されている方法 は、RxJS 5.5以降、演算子を使用するようになりました。

を読むことを強くお勧めします。 パイプ式演算子に関する公式文書

主な違いは、カスタム演算子を作るのが簡単なことと、いくつかのグローバルな Observable オブジェクトを使用すると、2 つの異なる当事者が同じ名前の演算子を作成しようとすると、衝突する可能性があります。

別々の import 各オペレータに対応する 'rxjs/add/operator/first' は、アプリのバンドルを小さくするための方法でした。RxJS ライブラリ全体ではなく、必要な演算子だけをインポートすることで、バンドル全体のサイズを大幅に小さくすることができます。しかし、コンパイラは、あなたが 'rxjs/add/operator/first' 本当に必要なのか、リファクタリングで削除し忘れただけなのか。これがパイプライン演算子の利点の1つで、未使用のインポートは自動的に無視されます。