【发布时间】:2015-07-06 13:04:24
【问题描述】:
我想要实现的是:
- 监控特定更改的偏好
- 检测到更改时,使用新值启动新的网络调用
- 转换结果
- 在 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 完整,这样我就可以向它抛出另一个值?例如,我可以想象一个简单的重试按钮,它只是想忽略发生错误的事实。
【问题讨论】:
-
阅读this,我猜解决方案3或4适用(吞下错误并重新启动),使用error handling operators之一可能会有所帮助,即retry or retryWhen。
-
SO 上还有一些
retryWhen的完整示例。 -
@david.mihola Like this stackoverflow.com/questions/18978523/…(你的语言不对,那是 C#)。
标签: java android rx-java rx-android