在Android应用程序中我有这种情况:
使用observable收听我的editText:
WidgetObservable.text(myEditText, false)
.map { it.text().toString() }
.debounce(800, TimeUnit.MILLISECONDS, Schedulers.io())
然后我需要发送带有observable发出的字符串的网络请求:
.flatMap { networkObservable.subscribeOn(Schedulers.io()) }
我的问题是:什么是编写这些网络结果的无限流的最佳方式。 UI处理的错误。
使用AppObservable.bindActivity()包装器取消订阅
我最终将materialize()运算符附加到网络可观察对象,然后像处理它一样处理它:
.subscribe{
when (it.getKind()) {
Kind.OnNext -> text.setText(it.getValue())
Kind.OnError -> text.setText(it.getThrowable().getMessage())
}
}
你知道更好的方式,还是它很好? 至少它有效。
P.S。另一个有用的案例是刷新按钮点击flatMap&#to ed to network calls
答案 0 :(得分:1)
您可以使用onErrorResumeNext
从失败中恢复Observable。如,
WidgetObservable.text(myEditText, false)
.map { it.text().toString() }
.debounce(800, TimeUnit.MILLISECONDS, Schedulers.io())
.flatMap {
networkObservable.subscribeOn(Schedulers.io())
.onErrorResumeNext(t -> t.getMessage())
}