一、描述
定期发射Observable最近发射的数据项。
Sample操作符定时查看一个Observable,然后发射自上次采样以来它最近发射的数据。
在某些实现中,有一个ThrottleFirst操作符的功能类似,但不是发射采样期间的最近的数据,而是发射在那段时间内的第一项数据。
RxJava将这个操作符实现为sample和throttleLast。
注意:如果自上次采样以来,原始Observable没有发射任何数据,这个操作返回的Observable在那段时间内也不会发射任何数据。
sample(别名throttleLast)的一个变体按照你参数中指定的时间间隔定时采样(TimeUnit指定时间单位)。
sample的这个变体默认在computation调度器上执行,但是你可以使用第三个参数指定其它的调度器。
二、示意图
三、示例代码
1 | protected void runSampleCode() { |
四、运行结果
1 | onNext: 1 |
项目代码已上传到Github:https://github.com/SherlockShi/RxJavaBestPractise
五、更多
sample操作符还有以下变体:
- sample(long,TimeUnit) 和 throttleLast(long,TimeUnit)
- sample(long,TimeUnit,Scheduler) 和 throttleLast(long,TimeUnit,Scheduler)
- sample(Observable)
跟sample相关的操作符还有:
- throttleFirst(long,TimeUnit)
- throttleFirst(long,TimeUnit,Scheduler)
详情可查阅下面的参考资料。
六、参考资料
PS:欢迎关注 SherlockShi 个人博客