使用RxJava跳过最后一个副本

时间:2015-03-09 12:42:06

标签: java reactive-programming rx-java

假设我们有一个主题用于发布一些事件

subject.onNext(...)

最终订阅者通过Observable订阅,该Observable是根据此主题创建的......

我想知道我们是否可以为observable添加一些逻辑,这样如果它获得相同的值,它就不会传播给订阅者......或者更复杂......?

是否有可能在向其订阅者发放值之前创建一个可执行某些代码的主题的observable?

3 个答案:

答案 0 :(得分:11)

如果某个值连续多次发出,则会有一个distinctUntilChanged运算符跳过该值。

如果您需要更多一般行为并希望根据某些条件跳过值,那么filter可能就是您要找的。

答案 1 :(得分:1)

似乎distictUntilChanged正是这种情况下所必需的......

答案 2 :(得分:1)

  

过滤器似乎我想要的但我真的不知道如何在某处保留最后一个值(除非我实现自定义observable)以及如何访问它以与新值进行比较?

您可以使用.buffer(2, 1).filter(...),以便filter可以访问当前和最后一个元素。