【问题标题】:RxJS 5 filter: 2 combineLatestRxJS 5 过滤器:2 combineLatest
【发布时间】:2017-02-15 17:43:01
【问题描述】:

使用 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 个或更多过滤器?

【问题讨论】:

    标签: angular rxjs5


    【解决方案1】:

    这是一个事件链,一旦你第一次过滤数据 - 它不会再次执行:

    数据 > 过滤器 1 > 数据' > 过滤器 2 > 结果

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 2017-06-25
      • 2021-02-21
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多