我想找到一種更好的方式來實現類似RxJava中的存儲庫模式。使用RxJava實現存儲庫模式
這是我到目前爲止有:(採取了一些代碼here)
public Subscription getData(Observer<Data> observer, boolean refresh) {
Subscription sub = null;
Data cached = getCachedData();
if(cached != null) {
observer.onNext(cached);
if(refresh) {
sub = requestNetwork().subscribe(observer);
} else {
observer.onCompleted();
}
} else {
sub = requestNetwork().subscribe(observer);
}
return sub;
}
基本上它檢查是否有緩存存儲的數據,如果沒有它會發出一個網絡請求。它也有refresh
布爾參數強制它總是發出網絡請求。
問題(或不是),此功能的調用者需要調用它將收到Subscription
而不是Observable
,我不能再鏈接。
有沒有辦法讓函數返回Observable
但仍然有存儲庫模式?
見http://blog.danlew.net/2015/06/22/loading-data-from-multiple-sources-with-rxjava/ – akarnokd
啊,我一次打開了那篇文章,但沒有使用它,因爲它使用了「第一個」,這使得訂閱者只能從第一個來源匹配謂詞。 我忘了我可以選擇** not **通過使用'refresh'參數調用'first'運算符。謝謝! –