2017-04-17 24 views
1

RxJS withLatestFromはインスタンスメソッドです。 Observableのインスタンスは、メソッドを呼び出すために新規作成/作成する必要があります。なぜ静的でないRxJSメソッドからの最新の?

mergeメソッドは静的メソッドです。必要なインスタンスは必要ありません。

なぜRxJS withLatestFromは静的メソッドではなくインスタンスメソッドであるのですか?

答えて

3

静的メソッドとインスタンスメソッドの両方として存在するcombineLatest演算子が良い例だと思います。ソースObservablesの順番はcombineLatestまでは関係ありません。その内部構造は同じ方法で動作し、出力は同じになります(結果の配列の値の順序は異なっていて、無関係です)。同じことがconcat,merge,zip,forkJoinなどに当てはまります。

しかし、withLatestFromオペレータでは、それは異なっており、オブザーバブルの順序は重要です。オペレーターが放出するときに制御する1つのソースObservableがあります。注文を変更した場合、別の結果が得られます。たとえば、次のような持っていた場合:

Observable.withLatestFrom(o1, o2, o3) 

これはあなたにも使用できることを意味以下:

Observable.withLatestFrom(...observables) 

今、あなたがソースで観察可能かを知ることができない、それはデバッグにハードになるだろうどうしたの。

静的メソッドがない理由は、あまり意味がないからです。 Observablesの順序は重要であり、物事をもっと難読化するだろう。

同じ理由で、bufferまたはwindowなどの他の演算子は、技術的な制限はないものの、静的なフォームを持っていません。単純に演算子を連結するのではなく、もっと命令的なコードを書くことができます。

2

withLatestFromは、別の観測値からの最新の値によって補われる標準的な「ソース」の概念を有するため、mergeとは異なります。 mergeはこのように「階層的」ではなく、オブザーバブルはequalsとして単一のストリームに結合されます。

関連する問題