超时终止Observable

时间:2015-11-12 14:20:58

标签: scala rx-java rx-scala

我试图通过超时来限制可观察的生命:

Const

我想区分以下结果:

  1. Observable由超时完成,未获得任何结果
  2. 执行期间抛出异常
  3. 执行成功完成,返回值
  4. 我可以在部分onNext和onError中处理案例2和3没有问题,但是如何通过超时检测observable是否已完成?

    还有一件事:虽然在我的代码中调用了obeserver.onCompleted(),但我从来没有进入块onComplete。为什么呢?

2 个答案:

答案 0 :(得分:1)

如果发生超时,则会在计算线程上发出TimeoutException,其中throw throwable最终被忽略,而您的主线程不会被忽略,并且无法看到它。您可以在超时后添加toBlocking,这样任何异常都将在同一个线程上结束:

firstStep
  .timeout(1 second)
  .toBlocking()
  .subscribe(
    item => println(item),
    throwable => println(throwable),
    () => println("complete")

答案 1 :(得分:0)

确实抛出了TimeoutException。问题是由使用错误的库引起的。我有" com.netflix.rxjava"在我的依赖项中,而不是" io.reactivex"