【发布时间】:2015-11-13 00:18:34
【问题描述】:
我正在尝试通过超时限制可观察对象的寿命:
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 超时结束,未获得结果
- 执行期间抛出异常
- 执行成功,返回值
我可以处理案例 2 和案例 3,在部分 onNext 和 onError 中没有问题,但是如何检测 observable 是否因超时完成?
还有一件事:尽管我的代码中有对 obeserver.onCompleted() 的调用,但我从来没有遇到过阻塞 onComplete。为什么?
【问题讨论】:
-
Operator
timeout将在 onError 通道上发出 TimeoutException。 -
@akarnokd,那我的代码有什么问题?因为我没有得到任何异常