Rx java 如果为我的订阅调用onError,我如何重新启动我的observer?

Rx java 如果为我的订阅调用onError,我如何重新启动我的observer?,rx-java,Rx Java,我目前正在使用: PublishSubject<PubNubObserverData> = PublishSubject.create() 有人打电话来吗 当前,当出现错误时,订阅将停止。您可以使用重试()操作符立即自动重新订阅。或者,您可以使用retryWhen()操作符在延迟后重新订阅,或者仅在有条件的情况下重新订阅 observable .retryWhen( error -> error.flatMap( e -> Observable.timer(1, S

我目前正在使用:

PublishSubject<PubNubObserverData> = PublishSubject.create()
有人打电话来吗

当前,当出现错误时,订阅将停止。

您可以使用
重试()
操作符立即自动重新订阅。或者,您可以使用
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
,而不是任何其他类型的错误,则将重试。

您可以使用
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
,而不是任何其他类型的错误,则将重试