【发布时间】:2022-07-01 13:51:22
【问题描述】:
我有一个具有可观察间隔的简单网络轮询功能
private fun pollFromApi(): Observable<MyState> {
return Observable.interval(3L, TimeUnit.SECONDS, schedulerProvider.io())
.startWith(0L)
.flatMap {
api.getState().toObservable()
}
.map {
// map response to MyState
}
.onErrorReturn {
return@onErrorReturn MyState.Polling // if error occurred emit Polling State
}
.takeUntil {
// stop polling if certain State is reached
}
}
我遇到的问题是,如果在轮询其中一个网络 API 调用失败,轮询就会停止。理想情况下,我想要继续重试,直到takeUntil 停止轮询,如果发生错误,只需忽略它,不要向观察者发出任何内容。
我尝试添加 onErrorReturn 但这只是捕获错误并停止轮询。
【问题讨论】:
-
请使用您使用的
onErrorReturn发布代码。 -
@akarnokd 已更新。基本上只是返回了轮询状态。正如我所说,它捕获错误但停止间隔轮询
-
如果
getState失败,请将onErrorReturn放在getState上。 -
在这种情况下,我想我需要返回一个更复杂的原始网络响应
-
是否有任何功能可以以某种方式忽略错误?
标签: java android kotlin rx-java