android - 如何在 android 中处理 rxjava 链中的错误?

标签 android rx-java rx-kotlin rx-kotlin2

我有一个项目列表,例如整数列表,如果任何整数为空,我需要使用错误并继续下一个项目

例如

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/

相关文章:

rx-java - 为在 Vert.X 中运行的 RxJava 设置 Hystrix 崩溃的请求上下文

android - RXKotlin 在 doOnNext 内部中断并调用另一个函数

android - Flutter 中的字符串 xml 文件

android - 使用 Firebase 将图像检索到 RecyclerView 时无法创建 Firebase 存储网络请求 android.os.RemoteException

grails - Groovy HTTPBuilder + RxJava返回一个空对象/可观察到

android - RxJava/RxKotlin 提示访问 View

java - RxJava : Create items in list and return new list

android - 如何将 Android esri arcGIS 点转换为经纬度

android - GLSurfaceView onResume - 选项卡式应用程序创建上下文

android - PublishSubject 和 TestScheduler 出现问题,未发出项目