我有一个方法,应该使用多个observable将数据库重新加载。毕竟它应该调用setupPlace(selecetedPlace)方法,但只能调用一次。每个observable都返回不同的对象(void,object,listOfObjects)。RxJava结合了多个可观察事物做完所有完成
private void reloadDatabaseFromRest(final Place selectedPlace, final Event selectedEvent) throws ParseException {
Observable.concat(DatabaseManager.getInstance().clearDatabase(),
mPlaceUseCase.getPlacesListFromRestObservable()
.filter(places -> places != null && !places.isEmpty())
.doOnNext(places -> mPlaceUseCase.savePlacesToRepository(places)),
mPlaceUseCase.saveSelectedPlace(selectedPlace),
mEventUseCase.getEvenListObservableFromRest(selectedPlace.getId())
.doOnNext(eventList -> mEventUseCase.saveEventsToRepository(eventList)),
mEventUseCase.saveSelectedEventObservable(selectedEvent))
.takeLast(1)
.subscribe(o -> mSplashScreenUI.setupPlace(selectedPlace));
}
但是这种方法只对最后一个observable做subsribe(),而其他的则没有被调用(对吗?)。我尝试使用过滤器,压缩和愚蠢如果(o instanceOf ArrayList)子句,但它是错误的方式。有人能帮助我吗?
'concat'应该依次调用所有的观察对象。 –