xor*_*ate 6 java android rx-java rx-android
我想要实现的是:
我知道变化何时发生,现在我假设我需要在主题上调用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
Run Code Online (Sandbox Code Playgroud)
但是在网络调用失败的情况下,可观察的错误和调用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));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4425 次 |
最近记录: |