我是新手Rx编程,有些代码让我感到困惑:
Observable.just(1,2,3,4,5,6)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { value ->
Log.i("TEST", "$value")
}
.dispose()
当我注释掉 subscribeOn() 和 observeOn() 或者 dispose() 时,它能够完美地工作,但不会记录结果,代码如下:
Observable.just(1,2,3,4,5,6)
.subscribe { value ->
Log.i("TEST", "$value")
}
.dispose()
或者
Observable.just(1,2,3,4,5,6)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { value ->
Log.i("TEST", "$value")
}
能否有人解释一下这个链条内部发生了什么
subscribeOn
和observeOn
引入了异步性,从而产生了一个时间窗口,在这个窗口中事件尚未流动,因此dispose
可以阻止它发生。如果没有异步性,事件会立即流动,而在你重新获得控制之前,dispose
已经太迟了。 - akarnokd