RxJS withLatestFromはインスタンスメソッドです。 Observableのインスタンスは、メソッドを呼び出すために新規作成/作成する必要があります。なぜ静的でないRxJSメソッドからの最新の?
mergeメソッドは静的メソッドです。必要なインスタンスは必要ありません。
なぜRxJS withLatestFrom
は静的メソッドではなくインスタンスメソッドであるのですか?
RxJS withLatestFromはインスタンスメソッドです。 Observableのインスタンスは、メソッドを呼び出すために新規作成/作成する必要があります。なぜ静的でないRxJSメソッドからの最新の?
mergeメソッドは静的メソッドです。必要なインスタンスは必要ありません。
なぜRxJS withLatestFrom
は静的メソッドではなくインスタンスメソッドであるのですか?
静的メソッドとインスタンスメソッドの両方として存在するcombineLatest
演算子が良い例だと思います。ソースObservablesの順番はcombineLatest
までは関係ありません。その内部構造は同じ方法で動作し、出力は同じになります(結果の配列の値の順序は異なっていて、無関係です)。同じことがconcat
,merge
,zip
,forkJoin
などに当てはまります。
しかし、withLatestFrom
オペレータでは、それは異なっており、オブザーバブルの順序は重要です。オペレーターが放出するときに制御する1つのソースObservableがあります。注文を変更した場合、別の結果が得られます。たとえば、次のような持っていた場合:
Observable.withLatestFrom(o1, o2, o3)
これはあなたにも使用できることを意味以下:
Observable.withLatestFrom(...observables)
今、あなたがソースで観察可能かを知ることができない、それはデバッグにハードになるだろうどうしたの。
静的メソッドがない理由は、あまり意味がないからです。 Observablesの順序は重要であり、物事をもっと難読化するだろう。
同じ理由で、buffer
またはwindow
などの他の演算子は、技術的な制限はないものの、静的なフォームを持っていません。単純に演算子を連結するのではなく、もっと命令的なコードを書くことができます。
withLatestFrom
は、別の観測値からの最新の値によって補われる標準的な「ソース」の概念を有するため、merge
とは異なります。 merge
はこのように「階層的」ではなく、オブザーバブルはequalsとして単一のストリームに結合されます。