Я пытаюсь создать хорошую цепочку. Я думаю, этот вопрос популярен и его спрашивали, но я его не нашел.Сеть RxJava для базы данных и сервера
Так что я хочу, чтобы пойти в базу данных, и если у меня ничего нет внутри, я хочу загрузить информацию с сервера.
Вот код:
() -> loadPriceListFromDatabase.call(null)
.flatMap(mealTypes -> {
if (mealTypes.size() != 0) {
return Observable.just(mealTypes); //here is the place where I'm not sure about code style.
}
return loadPriceList.call(null)
.map(model -> {
preferences.setPriceListDate(model.getDate().getTime());
return ActiveAndroidHelper.saveMeals(model);
});
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()),
MainActivity::onTestLoaded,
BaseActivity::onError
Так как я должен делать это? Любой должен использовать примеры?
UPD
Я хочу поставить любое условие, я хочу внутри если \ еще блок.
if (mealTypes.size() != 0) {
не только нулевой или нулевой. Например, я могу сказать,
if (date == currentDate) { (//where date is timestamp
но где is if \ else? Я думаю, что моя база данных будет продолжена в любом случае, дело в том, что она может вернуть список с нулевыми элементами. –
Нет необходимости в том, чтобы/else то, что он делает: подписаться на databaseObservable до тех пор, пока он не завершится (потому что concat) – CristianGM
И после того, как полная база данных пойдет в сеть, но поскольку у нас есть take (1), если вызовы базы данных onNext завершатся до вызова сети. Если databaseObservable возвращает Observable.empty(), он будет подписывать networkObservable. – CristianGM