首页 > 解决方案 > RxJava:忽略 Flowable 中的一些错误

问题描述

我有一个我想忽略Flowable<T>的子类型和错误IgnoreThisError(导致正常完成),所有其他错误都应该向下游传播。

科特林示例:

val f : Flowable<T> = ...
val g = f.onErrorComplete { it is IgnoreThisError }

这个函数 onErrorComplete 是我需要的并且不存在......

标签: kotlinrx-java2rx-kotlin2

解决方案


像这样的东西应该工作

f.onErrorResumeNext {
    if (it is IgnoreThisError)
        Flowable.empty()
    else
        Flowable.error(it)
}

由于重载和 Java 对签名变化的模拟,我不确定 Kotlin 是否可以在此处正确推断类型,如果不是,您可能需要更明确:

f.onErrorResumeNext(Function<Throwable, Publisher<T>> {
    if (it is IgnoreThisError)
        Flowable.empty()
    else
        Flowable.error(it)
})

推荐阅读