我有一个项目列表,例如整数列表,如果任何整数为空,我需要使用错误并继续下一个项目
例如
Observable.fromIterable(listOf(1, 2, 3, null, 5))
.map {
doSomeProcess(it)
}
.onErrorReturnItem(-1)
.subscribeBy(
onNext = {
print(it)
},
onError = {
},
onComplete = {
})
我期待这样的输出
1
2
3
-1
5
但我的问题是在 -1
之后它没有继续执行项目 5
,它停在那里,任何人都可以帮我解决这个问题吗?
最佳答案
在 Rx 中,onError 是一个终止事件。因此,如果您不想中断流,而只想处理错误并继续接收其他数据,则可以使用 Notification .
Observable.fromIterable(listOf(1, 2, 3, null, 5))
.map {
doSomeProcess(it)
}
.subscribeBy(
onNext = {
when {
it.isOnNext -> {
val result = it.value
if(result == -1){
//handle error here
}
}
//it.isOnComplete -> {
//}
//it.isOnError -> {
//}
}
}
)
private fun doSomeProcess(i: Int?): Notification<Int> =
if (i == null)
//Notification.createOnError(IllegalArgumentException())
Notification.createOnNext(-1)
else
Notification.createOnNext(i)
关于android - 如何在 android 中处理 rxjava 链中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56660075/