一、描述
延迟一段指定的时间再发射来自Observable的发射物。
Delay操作符让原始Observable在发射每项数据之前都暂停一段指定的时间段。效果是Observable发射的数据项在时间上向前整体平移了一个增量。
RxJava的实现是 delay和delaySubscription。
第一种delay接受一个定义时长的参数(包括数量和单位)。每当原始Observable发射一项数据,delay就启动一个定时器,当定时器过了给定的时间段时,delay返回的Observable发射相同的数据项。
注意:delay不会平移onError通知,它会立即将这个通知传递给订阅者,同时丢弃任何待发射的onNext通知。然而它会平移一个onCompleted通知。
delay默认在computation调度器上执行,你可以通过参数指定使用其它的调度器。
二、示意图
三、示例代码
1 | Observable.just(1, 2, 3) |
四、运行结果
1 | (2秒后...) |
五、更多
delay操作符还有以下变体:
- delay(long,TimeUnit)
- delay()
- delay(Func1)
- delay(Func0,Func1)
跟delay相关的操作符还有:
- delaySubscription(long,TimeUnit)
- delaySubscription(long,TimeUnit,Scheduler)
- delaySubscription(Func0)
详情可查阅下面的参考资料。
六、参考资料
PS:欢迎关注 SherlockShi 个人博客