基本的な概念は理解していると思うが、不明な点がいくつかある
一般的には、私は次のように使用します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 => {
})
私の質問は次のとおりです:
- 違いはなんですか?
- 違いがないのなら、なぜその関数が
pipe
存在するのでしょうか? - なぜこれらの関数には異なるインポートが必要なのでしょうか?
ベストアンサー1
「パイプ可能」(以前は「lettable」)演算子は現在推奨されている方法RxJS 5.5 以降の演算子の使用。
ぜひ読んでみてくださいパイプ可能な演算子に関する公式ドキュメント
主な違いは、カスタム演算子の作成が容易になり、Observable
2 つの異なる当事者が同じ名前の演算子を作成しようとした場合に衝突が発生する可能性のあるグローバル オブジェクトを変更せずに、ツリーシェイキングが容易になることです。
import
各演算子に個別のステートメントを使用することは、'rxjs/add/operator/first'
アプリ バンドルを小さくする方法でした。RxJS ライブラリ全体ではなく、必要な演算子のみをインポートすることで、バンドルの合計サイズを大幅に削減できます。ただし、コンパイラは、'rxjs/add/operator/first'
コードで本当に必要だからインポートしたのか、それともコードのリファクタリング時に削除し忘れただけなのかを認識できません。これは、未使用のインポートが自動的に無視されるパイプ可能な演算子を使用する利点の 1 つです。