gpt4 book ai didi

java - 使用 RxJava 实现存储库模式

转载 作者:太空狗 更新时间:2023-10-29 14:00:03 53 4
gpt4 key购买 nike

我正在尝试找出一种更好的方法来实现类似 Android 中 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 boolean 参数,强制它始终发出网络请求。

问题(或不是)是,此函数的调用者需要调用它时将收到 Subscription 而不是 Observable,我不能再链接它了。

有没有办法让函数返回 Observable 但仍然有存储库模式?

最佳答案

感谢 akarnokd 指出我 this article作者:Dan Lew。

我的最终代码:

public Observable<Data> getData(boolean refresh) {
Observable<Data> obs = Observable.concat(getCache(), requestNetwork());
if(!refresh) {
obs = obs.first(data -> data != null);
}
return obs;
}

关于java - 使用 RxJava 实现存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383010/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com