我想为后续订阅缓存可观察的项目,但我不想缓存错误。 似乎缓存操作符也缓存了throwables。我该如何实现呢?
答案 0 :(得分:5)
没有办法让cache
本身停止缓存终端事件(onError
和onCompleted
)。但您可以在终端事件发生之前将其过滤掉。
我写了一些处理帖子here中错误的方法。基本上,您可以使用the catch operators之一,例如onErrorReturn()
或onErrorResumeNext()
将这些错误转换为非错误。
或者,如果您可以使用materialize()
+ dematerialize()
并过滤掉任何错误通知。但在功能上与使用onErrorResumeNext()
与Observable.empty()
不同。
举个例子,你基本上可以这样做:
observable
.onErrorResumeNext(throwable -> Observable.empty())
.cache()
这会过滤掉错误,但会缓存其余的错误。