新しいストリームのみが操作されるように、merge
または機能にどのストリームが入ってくるかを特定する方法について、いくつかのベスト プラクティスの提案を探しています。combineLatest
TODO アプリのコンテキストでは、受信する add ストリームと remove ストリームがあり、ステートレスな方法で 1 つのストリーム内でリストの編集を行えるようにそれらを結合したいと考えています。出力は、追加 (concat) イベントと削除 (フィルター) イベントの両方を統合したリストです。そうしないと、すべての追加または削除イベントを含む他のストリームになってしまい、無限に大きくなるようです。
発生した問題は次のとおりです。
- using
merge
は、どのストリームが着信しているかを示すものではありません。 - using
combineLatest
は、サブスクライブされたストリームをトリガーしたストリームを示すものではないため、そのストリームに関連する操作のみを実行することはできません。 withLatestFrom
入力ソースを更新しない新しいリストを使用withLatestFrom
すると、このリストに関心のある次のストリームもそのリストを購読しない限り、リストは同期しなくなります (または、その前のリストに基づいてすべての新しいリストが作成されます。これにより、それ以前に発生したすべての変換を不必要に再実行することになります...)。
どういうわけか次善のように見える現在見つかったアプローチには、次のものがあります。
- Cycle JS TODO アプリ
type
は、識別のために以前のストリームの作成済みオブジェクトに明示的にプロパティを直接割り当てます。 - http://www.jisaacks.com/manipulating-rxjs-streams/からの提案を取り入れ、追加ストリームと削除ストリームの出力を and に分割して
[null, {addItem}]
、追加イベントと削除イベントの両方[removeItem, {null}]
に使用する場合merge
でも、着信を識別できるようにします1 つのストリームで追加と削除の両方を実行できるように更新されていたストリーム (ただし、トグル イベントなどを追加したいのですが、ストリーム出力を作成する必要があるため、これも正しくないようです)他のすべての潜在的なストリーム ([null、null、myOutput、null、null など] で終わる) を認識します。
ベストプラクティスの提案は大歓迎です。