
34
|
第
2
章
在语义上,它与前面的代码相同,但是更加简短。除此之外,相对于
create(),它还有一
些其他的优点,稍后会介绍。
2.4.3
计时
:
timer()
和
interval()
我们已经介绍了 Observable 如何自行创建线程,但它在
RxJava
中并不是最好的模式。后
面的章节会介绍调度器,但是我们先来了解一下两个非常有用的操作符,也就是 timer()
和 interval(),它们在底层会用到线程。前者只是简单地创建一个 Observable,在特定的
延迟后发布一个 long 类型的零值,然后完成。
Observable
.timer(1, TimeUnit.SECONDS)
.subscribe((Long zero) -> log(zero));
虽然看起来很傻,但是 timer() 非常有用。基本上,它就是一个异步版本的 Thread.
sleep()。我们创建了一个 Observable 并通过 subscribe() 订阅它,而不是阻塞当前线程。
学习如何将简单的 Observable 组合为更复杂的计算形式之后,它将变得更加重要。固定的
值零(在 zero 变量中)只是一个约定,并没有任何特殊的含义。不过,引入 interval()
之后,就会更有意义了。interval() 会生成一个 long 类型数字的序列,从零开始,每个数
字之间有固定的时间间隔。
Observable
.interval(1_000_000 / 60, MICROSECONDS)
.subscribe((Long ...