对于ReactiveX来说,我是个笨蛋,所以这个问题可能很简单,但我没有通过搜索找到答案。
我有一个可观察到的物品非常不规律地发射(从每秒约4次到每5秒一次)我想确保它永远不会每秒发射一次物品。我考虑过将zip
运算符与Observable.interval()
一起使用,但我意识到如果它在5秒后发出一个项目,然后在不到一秒的时间内发出3个项目,那么所有这些项目都会在一秒内发出。
有没有简单的方法呢?
答案 0 :(得分:1)
有几种方法可以达到你想要的效果。您最终使用的内容取决于您的使用案例。
throttle
让您指定只需要一定时间间隔的新值。这可能与您尝试使用zip
和interval
:
myObservable.throttleLast(1, TIMEUNIT.SECOND)
这将发出每秒发出的最新信号。第二个内部发出的其他信号被丢弃。
buffer
与throttleLast
的作用大致相同,但它不会传递最近发出的值,而是返回Flowable
,其中包含在时间范围内发出的所有值。
myObservable.buffer(1, TIMEUNIT.SECOND)