0
問題描述
我有一個簡單的類,功能簡單buildUseCaseObservable
。功能應該做以下Observable中的處理錯誤
- 嘗試從互聯網第一
- 獲取數據如果成功寫入數據到數據庫
- 如果有類似的異常失敗:
ServerUnavailable
,SocketException
應讀取數據庫中的數據,也應該報告錯誤。 - 如果收到數據,但數據爲空或爲空,則應從數據庫中讀取數據。
基本上一切工作像預期,除了大膽點。如果從Web獲取數據時發生問題,則只調用onError
,而不調用onNext
。
我發現有方法稱爲onErrorResumeNext
這基本上是做什麼,我需要,但在這種情況下,我失去錯誤(onError
不叫,反而onNext
稱)
問題
是像onCompleteWithError
這樣的方法還是沒有如何實現這樣的東西不會失去錯誤?
@PerActivity
public class DataInteractor extends Interactor {
private RestService rest;
private DataService data;
@Inject
AuthorsInteractor(RestService rest, DataService data) {
this.rest = rest;
this.data = data;
}
@Override
protected Observable buildUseCaseObservable() {
return Observable.concat(
rest.getData().doOnNext(data -> data.setAuthors(authors)),
data.getData())
.first(data -> data != null && !authors.isEmpty());
}
}
,是有做一些更優雅的方式我想做的事 ? –
[此博客文章](http://blog.danlew.net/2015/06/22/loading-data-from-multiple-sources-with-rxjava/)可能對您有用@VictorApoyan。乾杯。 –
@YeMinHtut謝謝它是有用的,但不是我的問題。 –