Rxjava缓存操作符

fer*_*988 3 rx-java

我想为后续订阅缓存可观察项目,但我不想缓存错误.似乎缓存操作符也缓存了throwables.我怎么能做到这一点?

Dan*_*Lew 5

没有办法让cache自己停止缓存终端事件(onErroronCompleted).但您可以在终端事件发生之前将其过滤掉.

我在这里写了一些处理错误的方法.基本上,你可以使用一个捕捉运营商onErrorReturn()或者onErrorResumeNext()这些错误转化为非错误.

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


举个例子,你基本上会做这样的事情:

observable
  .onErrorResumeNext(throwable -> Observable.empty())
  .cache()
Run Code Online (Sandbox Code Playgroud)

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