Rx java Rxjava缓存操作符

Rx java Rxjava缓存操作符,rx-java,Rx Java,我想缓存后续订阅的可观察项,但不想缓存错误。 似乎缓存操作符也缓存一次性文件。如何实现这一点?无法使缓存本身停止缓存终端事件(onError和onCompleted)。但您可以在终端事件发生之前过滤掉它们 我在一篇文章中写了一些处理错误的方法。基本上,您可以使用类似的onerrorrurn()或onerrorrumenext()将这些错误转换为非错误 或者,如果您可以使用并过滤掉任何错误通知。但在功能上,这与使用onerrorrumerenext()和Observable.empty()没有什么

我想缓存后续订阅的可观察项,但不想缓存错误。
似乎缓存操作符也缓存一次性文件。如何实现这一点?

无法使
缓存本身停止缓存终端事件(
onError
onCompleted
)。但您可以在终端事件发生之前过滤掉它们

我在一篇文章中写了一些处理错误的方法。基本上,您可以使用类似的
onerrorrurn()
onerrorrumenext()
将这些错误转换为非错误

或者,如果您可以使用并过滤掉任何错误通知。但在功能上,这与使用
onerrorrumerenext()
Observable.empty()
没有什么不同


例如,您基本上可以这样做:

observable
  .onErrorResumeNext(throwable -> Observable.empty())
  .cache()

这将过滤掉错误,然后缓存其余的错误。

谢谢!但我也想知道,如果我只想在可观察对象完成且没有错误的情况下缓存结果,该怎么办。我的意思是,如果出现错误,缓存将无法工作,它将再次订阅源可观察对象以进行下一次订阅,直到源可观察对象在没有错误的情况下完成。我猜缓存操作员只订阅一次。您可以在
缓存
之前粘贴一个
重试
,这将允许在出现错误时重新订阅。也许你想研究一下,以确保你不会无限地重新订阅。