我目前正在使用:
PublishSubject<PubNubObserverData> = PublishSubject.create()
我想知道如何在
时重启订阅onError(Throwable e)
由?
调用目前订阅在发生错误时停止。
答案 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
,将重试,而不是任何其他类型的错误。