在函数f returns Single<String>
下面的代码中,
Observable.map { line ->
f(line).doOnError { e ->
println("Error:$e")
}
}
.subscribe({ record -> println(record) }, { e -> println("Error2:$e") })
地图内的 println("Error:$e")
不会执行,但是我将能够在订阅者中打印错误。它看起来像mapper函数中的链接不允许。这是对的吗?如果是,为什么?
编辑:也尝试过flatmap,但结果相同。
Observable.flatmap { line ->
f(line).toObservable().doOnError { e ->
println("Error:$e")
}
}
.subscribe({ record -> println(record) }, { e -> println("Error2:$e") })
答案 0 :(得分:1)
这可以按预期工作:
@Test
public void test() {
Observable.just(1)
.flatMap(v -> single(v)
.toObservable()
.doOnError(w -> System.out.println("Error2 " + w))
)
.subscribe(v -> System.out.println(v), e -> System.out.println("Error " + e));
}
Single<Integer> single(Integer v) {
return Single.error(new IOException());
}
打印:
Error2 java.io.IOException
Error java.io.IOException