【发布时间】:2021-09-27 19:38:56
【问题描述】:
我是 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到那时为时已晚。