Описание проблемы
У меня есть простой класс с простой функцией buildUseCaseObservable
. Функция должна выполнить следующиеОшибка обработки в Observable
- Try, чтобы получить данные из Интернета первого
- Если удастся записи данных в базу данных
- Если не удалось с исключениями, такими как:
ServerUnavailable
,SocketException
должен считывать данные из базы данных, а также должны сообщать ошибка. - Если данные получены, но данные были пустыми или пустыми, следует читать данные из базы данных.
В основном все работает, как и следовало ожидать, кроме смелой точки. В случае, если что-то происходит при получении данных из Интернета, вызывается только 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 спасибо, это полезно, но не для моего вопроса. –