我试图通过超时限制可观察的寿命:
def doLongOperation() = {
Thread.sleep(duration)
"OK"
}
def firstStep = Observable.create(
(observer: Observer[String]) => {
observer.onNext(doLongOperation())
observer.onCompleted()
Subscription()
}
)
firstStep
.timeout(1 second)
.subscribe(
item => println(item),
throwable => throw throwable,
() => println("complete")
)
我想区分以下结果:
- Observable 超时结束,没有得到结果
- 执行过程中抛出异常
- 执行成功,返回值
我可以在部分 onNext 和 onError 中毫无问题地处理案例 2 和 3,但是如何检测 observable 是否因超时完成?
还有一件事:尽管我的代码中有对 obeserver.onCompleted() 的调用,但我从来没有进入 block onComplete。为什么?