RxJS 5 filter:2 combineLatest
问题描述:
使用Angular,我显示来自服务器的数据列表(数组)。在列表的上方有一个button bar
和dropdown
,允许用户列表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个或更多的过滤器?
答
这是一连串的事件,一旦你过滤后的数据第一次 - 它不会被再次执行:
数据>过滤器1>数据”>过滤器2>导致
如果你的过滤器不是异步,那么它可以简化为:
this.http.get('/api')
.map(data => _.filter(data, item => <check item to satisfy filters 1 and 2>))