我想找到一种更好的方式来实现类似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'运算符。谢谢! –