创建rxjava观察

时间:2017-11-19 02:00:49

标签: rx-java rx-java2

如何在图片中创建观察? Click to see the picture 我想获得点击事件1,3和4并摆脱2因为1,2,3非常接近(彼此之间<200ms)。 如果我有点击事件1,2,3,4,5,6 ................ 7,8,9 .......... 10,我想只得到1,6,7,9,10。因为1,2,3,4,5,6彼此非常接近(比如说&lt; 200ms),我只想得到它们中的第一个和最后一个。 抱歉我的英语不好,很难解释:)

2 个答案:

答案 0 :(得分:0)

我相信buffer运营商就是您所需要的。

例如:

    Observable.from(events).buffer(1, TimeUnit.SECONDS).
       subscribe(objects -> System.out.println(String.format("got {} items", objects.size())));

答案 1 :(得分:0)

使用Debounce运算符根据时间跳过某些事件。这是Debounce运算符的文档。

  

在此运算符中,每次收到值时都会启动时间窗口。窗口到期后,将发出该值。但是,如果在窗口到期之前收到另一个值,则拒绝前一个值,窗口将重新启动以获取下一个值。

让我们看看下面的简单示例。

    Observable.range(0, 10)
            .debounce(100, TimeUnit.MILLISECONDS);

在此处发出整数值0-10。假设1在0之后发出20毫秒,在1之后发出120毫秒。

因此,debounce运算符将仅发出1和2,因为0和1发生在时间范围内。而1和2间隔100毫秒。

enter image description here

Documentation