可以說我有調用REST API服務可觀察到的,然後將結果存儲在數據庫中:如何檢查可觀察爲空或返回布爾值
public Observable<Boolean> initDB() {
return this.restApi.feedsEntityList()
.flatMap(feedEntityList -> this.mNewsCache.saveFeeds(feedEntityList));
}
保存可觀察執行數據庫保存,並應在返回true在錯誤的情況下成功或錯誤的情況發生了:
public Observable<Boolean> saveFeeds(List<FeedEntity> feedEntity) {
if (feedEntity != null) {
return Observable.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
try {
Log.d("DB: ", "saving Feed to DB");
for (FeedEntity feeds : feedEntity){
feeds.save();
}
subscriber.onNext(true);
subscriber.onCompleted();
} catch (Exception exception) {
subscriber.onError(exception);
}
}
});
} else
return Observable.empty();
}
在這最後一個可觀察,我不知道我是否做正確。即如果數據庫保存操作成功完成,則返回true。否則返回false!
另外,我是否應該返回feedEntity爲空?
是否正確?我應該如何檢查observable是否返回true,false或空Observable?
很好...指的是第一個觀察者..是否會在flatMap轉換後終止?在其他世界中,在保存數據後,該觀察者會發生什麼? – Fshamri
每當從第一個Observable調用'onNext()'時,'flatMap()'中的函數都會被調用。一旦你的'saveFeeds()'Observable完成,整個鏈將完成,因爲這是鏈中的最後一個Observable。 –
現在很清楚....感謝您的幫助和明確的解釋。 – Fshamri