首页 > 解决方案 > 如何仅处理一段时间内的最后一个事件?

问题描述

我收到了很多间隔一秒的事件。我想每秒处理最近的事件。例如 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15。每秒 5 个事件。因此我只想在第 1 秒进行事件 5,在第 2 秒 2 进行 10 事件,在第 3 秒进行 15 事件。我对可流动但它只是在事件之间引入延迟,如果事件流是恒定的,则不会触发去抖动

标签: rx-java2

解决方案


似乎这throttleLast(1, TimeUnit.SECONDS)就是你所需要的。它仅在指定持续时间的连续时间窗口内发出由反应源发出的最后一项。

sample() 运算符 rx 文档

throttleLast() 说明


推荐阅读