我编写了一个Android应用程序,当网络连接正常时从服务器获取数据,否则从本地数据库获取数据。从概念上讲,我有:
networkObservable.onErrorResumeNext(dbObservable).subscribe(...);
但是如果networkObservable
遇到错误,我还想告知用户有关conncetion问题;不只是恢复DB observable。
但是现在在我看来,我要么恢复dbObservable,要么报告Subscriber
onError()
方法中发生了错误。这个问题有解决方案吗?
答案 0 :(得分:0)
在.doOnError()
之前添加.onErrorResumeNext()
:
networkObservable
.doOnError(informTheUser())
.onErrorResumeNext(dbObservable)
.subscribe(...);
答案 1 :(得分:0)
此问题的解决方案可能如下:
return networkObservable.onErrorResumeNext(
Observable.concat(
dbObservable, Observable.create(new Observable.OnSubscribe<Data>() {
@Override
public void call(Subscriber<? super Data> subscriber) {
subscriber.onNext(null);
}
})
)
);
订阅者可以对空值做出反应并报告加载数据时出现问题。然而,在该解决方案中,关于错误的精确信息丢失我们仅使用Throwable
替换null
。