RxJava较长的时间间隔取决于当前的排放数量

时间:2017-11-20 13:35:14

标签: rx-java rx-java2

假设有一个Observable时间间隔,每隔一秒发出一次Long项。如何扩大与当前排放数量相关的时间段?

因此,例如对于前4次排放,它应该每秒发射一次物品,但之后它应该每隔3秒发射一次物品?

这有可能实现吗?

1 个答案:

答案 0 :(得分:0)

您可以使用switchMap()运算符根据发射次数设置延迟间隔。

observable
  .zipWith( Observable.range(20_000), new Pair<>(item, itemNumber ))
  .switchMap( pair -> Observable.just( pair.getFirst() )
                        .delay( emissionDelay( pair.getSecond() ), units )
  ...

zipWith()运算符生成与其发射编号配对的项目,而switchMap()创建一个新的observable,其延迟由函数emissionDelay()设置,该函数的发射编号为计算units中的延迟。