RxJS 5 filter:2 combineLatest

RxJS 5 filter:2 combineLatest

问题描述:

使用Angular,我显示来自服务器的数据列表(数组)。在列表的上方有一个button bardropdown,允许用户列表filterRxJS 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个或更多的过滤器?

这是一连串的事件,一旦你过滤后的数据第一次 - 它不会被再次执行:

数据>过滤器1>数据”>过滤器2>导致

如果你的过滤器不是异步,那么它可以简化为:

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