我正在学习java-rx。我正在开发一个应用程序,我想考虑以下几点
我在应用程序中开发了以下可观察对象
Observable<Data> disk = ...;
Observable<Data> network = ...;
Observable<Data> networkWithSave = network.doOnNext(data -> {
saveToDisk(data);
});
我还宣布了以下订阅者
new Observer<List<Items>>() {
@Override
public void onCompleted() {
mView.hideProgressBar();
}
@Override
public void onError(Throwable e) {
mView.showLoadingError();
}
@Override
public void onNext(List<Vault> vaults) {
processItems(vaults);
}
}
我希望收到关于连接这些Observable的正确方法的一些建议。
我希望首先显示磁盘上的数据。然后检查网络,如果有新数据,则更新它们。
网络查询可能是并行的,但如果它在磁盘不显示磁盘数据之前运行。
非常感谢你。 对不起我的英文
答案 0 :(得分:1)
我认为disk.concatWith(networkWithSave).subscribe(ui)
会这样做。
但磁盘数据(如果有的话)总是先行。
如果磁盘上没有数据,则必须完成磁盘源而不发送任何消息。磁盘源绝不能完成,因为这会有效阻止您的网络源。
在您的UI订阅者中,如果已从磁盘获取数据,您可能希望静默忽略onError
(来自网络)。
答案 1 :(得分:1)
也许Dan Lew Blog Post可以为您提供想法。