タイムアウトによってオブザーバブルの寿命を制限しようとしています:
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 で問題なく処理できますが、オブザーバブルがタイムアウトで終了したかどうかを検出するにはどうすればよいですか?
もう 1 つ: 私のコードには obeserver.onCompleted() への呼び出しがありますが、ブロック onComplete に入ったことがありません。なんで?