我想要实现的是:
- 监控特定变化的偏好
- 当检测到更改时,使用新值启动新的网络调用
- 变换结果
- 在 UI 中显示结果
我知道更改何时发生,现在我认为我需要对某个主题调用 onNext 。然后这应该会触发 Rx 链,最后我可以更新 UI。
mViewPeriodSubject = PublishSubject.create();
mAdapterObservable =
mViewPeriodSubject
.flatMap(period -> MyRetrofitAPI.getService().fetchData(period)) // this might fail
.flatMap(Observable::from)
.map(MyItem::modifyItem)
.toList()
.map(obj -> new MyAdapter(obj));
mViewPeriodSubject.onNext("week"); // this one starts the chain
mViewPeriodSubject.onNext("year"); // this one does not
但在网络调用失败的情况下,可观察到的错误,并且调用 onNext() 不会导致另一个网络调用。
所以我的问题是,我应该如何处理这个问题?我怎样才能保持 Observable 完整,以便我可以向它抛出另一个值?例如,我可以想象一个简单的重试按钮,它只想忽略发生错误的事实。
您不必处理您的错误mViewPeriodSubject
相反,处理改造后的 Observable 中的错误。这个改造后的 Observable 不会恢复,但至少,它不会影响你的“主”Observable。
mAdapterObservable =
mViewPeriodSubject
.flatMap(period -> MyRetrofitAPI.getService().fetchData(period).onErrorResumeNext(e -> Observable.empty()) // this might fail
.flatMap(Observable::from)
.map(MyItem::modifyItem)
.toList()
.map(obj -> new MyAdapter(obj));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)