如果为我的订阅调用onError,如何重新启动观察者?

时间:2017-08-14 15:14:16

标签: rx-java

我目前正在使用:

PublishSubject<PubNubObserverData> = PublishSubject.create()

我想知道如何在

时重启订阅
onError(Throwable e) 

由?

调用

目前订阅在发生错误时停止。

1 个答案:

答案 0 :(得分:2)

您可以使用retry()运算符立即自动重新订阅。或者,您可以使用retryWhen()运算符在延迟后重新订阅或仅有条件地重新订阅。

observable
  .retryWhen( error -> error.flatMap( e -> Observable.timer(1, SECONDS))

将在1秒后重试订阅。使用flatMap()您还可以测试错误类型,并仅针对特定错误重试。

observable
  .retryWhen( error -> error.flatMap( e -> { 
    if (e instanceof IOException) {return Observable.timer(1, SECONDS);}
      return Observable.just( e );
    } )
如果错误为IOException

将重试,而不是任何其他类型的错误。