Rxjava缓存操作符

时间:2016-02-04 09:35:39

标签: rx-java

我想为后续订阅缓存可观察的项目,但我不想缓存错误。 似乎缓存操作符也缓存了throwables。我该如何实现呢?

1 个答案:

答案 0 :(得分:5)

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

我写了一些处理帖子here中错误的方法。基本上,您可以使用the catch operators之一,例如onErrorReturn()onErrorResumeNext()将这些错误转换为非错误。

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

举个例子,你基本上可以这样做:

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

这会过滤掉错误,但会缓存其余的错误。