我有一個Observable
誰從數據庫中讀取數據。如果數據是null
我需要從網絡中獲取它。所以我做flatMap
第一Observable
,檢查數據庫操作的結果,如果它是null
我開始另一個Observable
從網絡中獲取數據。如何在flatMap()中等待Observable的onComplete()
注:Observable
■找不同Subscriber
因爲我根據其中數據來自(例如邏輯)具有不同的後處理。
Observable.just(readDataFromDb()).flatMap(new Func1<SomeData, Observable<String>>() {
@Override public Observable<SomeData> call(SomeData s) {
if (s == null) {
getReadFromNetworkObservable().subscribe(new AnotherSubscriber()); // this one might not complete
return Observable.empty(); // I think I need to send this one only after readFromNetwork() completed
} else {
return Observable.just(s);
}
}
}).subscribe(new SomeSubscirber());
鑑於我送Observable.empty()
排除數據處理SomeSubscriber
,我有預感我的第二個Observable
可以,因爲它可能被簡單地作爲垃圾回收並不總是完成。我想我在測試中看到了它。
在這一點上,我想我只需要等到Observable
誰從網絡讀取完成,然後發送Observable.empty()
。那麼我可以讓執行同步嗎?但是我仍然覺得我做錯了。
檢查這回答https://stackoverflow.com/questions/26939175/rxjava-and-cached-data和這個博客http://blog.danlew.net/2015/06/22/loading-data-from-multiple-sources-with -rxjava /。還要檢查RxJava中的'doOnNext'運算符以獲得一些想法。 –
你可以看看我的問題,我發現了幾個選項來組合來自多個來源的數據。通過社區幫助,我們爲這個用例獲得最強大的版本。 http://stackoverflow.com/questions/40797144/andorid-rxjava-how-to-get-data-from-cache-and-the-same-time-update-it-in-th – Gleichmut