【发布时间】:2018-03-17 00:12:16
【问题描述】:
我正在学习 RxJava。我订阅了一个长时间运行的回调作为一个可观察的,并希望看到 onNext 回调被执行:
fun test(){
fetchNumber(2,4).subscribeOn(Schedulers.io()).doOnSubscribe { println("subscribed") }.subscribe({ println(it)})
}
private fun fetchNumber(a: Int, b: Int) : Observable<Int> {
return Observable.fromCallable {
Thread.sleep(4000)
a + b
}
}
我期待输出“6”被打印出来,但该方法在此之前完成。
如果我没有订阅 IO 调度程序,那么调用会被阻止,我确实会看到打印的输出。
我的问题是,如果在 IO 调度程序上运行,为什么不执行回调。我了解 test() 方法已终止,但订阅回调的引用尚未释放。
【问题讨论】: