【发布时间】:2017-11-20 13:35:13
【问题描述】:
假设有一个时间间隔 Observable,它每隔一秒发出 Long 项目。如何扩大与当前排放数量相关的时间段?
例如,对于前 4 次发射,它应该每秒发射一次,但之后它应该每 3 秒发射一次?
这可能实现吗?
【问题讨论】:
假设有一个时间间隔 Observable,它每隔一秒发出 Long 项目。如何扩大与当前排放数量相关的时间段?
例如,对于前 4 次发射,它应该每秒发射一次,但之后它应该每 3 秒发射一次?
这可能实现吗?
【问题讨论】:
您可以使用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() 设置,该函数给定发射数以计算 @987654326 中的延迟@。
【讨论】: