2017-02-15 7 views
2

Angularを使用して、サーバーからのデータのリスト(配列)を表示しています。リストの上にbutton bardropdownがあり、ユーザーはfilterのリストを許可します。RxJS 5 filter:2 combineLatest

私は2 Subjectsを作成し、このような流れの中combineLatestを使用:これは動作しますが

this.http.get('/api') 
    .combineLatest(this.firstFilter$.startWith(initialValue)) 
    .map(([data, firstFilter]) => _.filter(data, item => firstFilter === item.prop)) 
    .combineLatest(this.secondFilter$.startWith(initialValue)) 
    .map(([data, secondFilter]) => _.filter(data, item => secondFilter === item.prop)) 

、デバッグするとき、私は()secondFilter $の.nextを呼び出すときにfirstFilterのマップが呼び出されていないことを...気づきましたしかし、それはまだ両方のフィルタを考慮に入れ、適切なデータを表示します。

2つ以上のフィルタを処理する方が適切かどうか疑問に思っていますか?

答えて

0

あなたがデータを最初にフィルタ処理後これは、一連のイベントである - それは再度実行する習慣:

データ>フィルタ1>データ」>フィルタ2>をあなたのフィルタが非同期でない場合

を引き起こしますそれを簡略化して:

this.http.get('/api') 
.map(data => _.filter(data, item => <check item to satisfy filters 1 and 2>))