【问题标题】:RxJava- How to backpressure a flatmap()RxJava-如何背压平面图()
【发布时间】:2015-12-23 11:51:33
【问题描述】:

也许我忽略了运算符的简单组合(或者完全是 RxJava 的固有取消行为)。但假设我有一个热门的 observable selectedItem 可以平面映射到 RxJava-JDBC 查询。

@Test
public void testFlatMapBackPressure() { 
    Database db = null; //assign db

    BehaviorSubject<Integer> selectedItem = BehaviorSubject.create();

    //can I backpressure the queries so only the latest one is running, and any previous is cancelled?
    Observable<List<Integer>> currentValues = selectedItem.flatMap(i ->  db.select("SELECT VALUE FROM MY_TABLE WHERE ID =?")
            .parameter(i)
            .getAs(Integer.class)
            .toList());
}

我怎样才能对flatMap() 运算符进行反压,以便它始终只执行最新的查询(并取消任何以前的查询)。我有点想要一个背压的 flatMap 运算符来做这样的事情,其中​​“X”表示取消先前的查询

有没有办法做到这一点?或者它已经完成了,我只是没有看到它?

【问题讨论】:

    标签: java reactive-programming rx-java


    【解决方案1】:

    听起来你需要switchMap() 而不是flatMap()

    通过将您提供的函数应用于返回 Observable 的源 Observable 发射的每个项目,然后发射这些 Observable 中最近发射的项目,从而返回一个新的 Observable。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 2023-03-14
      • 2018-08-24
      • 2013-11-26
      • 2015-06-20
      • 1970-01-01
      相关资源
      最近更新 更多