RxJS 5过滤器:2 combineLatest

时间:2017-02-15 17:43:02

标签: angular rxjs5

使用Angular,我正在显示来自服务器的数据列表(数组)。列表上方有一个button bardropdown,允许用户filter列表。

我在流中创建了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 个答案:

答案 0 :(得分:0)

这是一系列事件,一旦您第一次过滤数据 - 它将不会再次执行:

数据&gt;滤波器1&gt;数据&#39; &GT; <滤波器2>结果

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

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