좋은 체인을 만들려고합니다. 나는이 질문이 대중적이며 부탁 받았지만 그것을 발견하지 못했다고 생각한다.데이터베이스와 서버에 대한 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) {
무언가가 null이거나 0이 아닙니다. 예를 들어 나는 당신의 관찰이 자동으로 파이프 라인에 새로운 하나를 제공 할 수있는 비어있는 경우
if (date == currentDate) { (//where date is timestamp
하지만 if \ else는 어디에 있습니까? 두 경우 모두 내 데이터베이스가 계속 될 것입니다. 문제는 요소가 0 인 목록을 반환 할 수 있다는 것입니다. –
if/else의 필요성은 다음과 같습니다. 완료 될 때까지 데이터베이스 연결을 구독하십시오 (concat가 있기 때문에) – CristianGM
데이터베이스의 전체 완료 후에 네트워크로 이동하지만 take (1)이있는 경우 데이터베이스 호출은 네트워크를 호출하기 전에 끝날 것입니다. databaseObservable이 Observable.empty()를 반환하면 networkObservable을 구독합니다. – CristianGM