RxJava FlatMap:如何跳过错误?

时间:2017-02-10 14:03:41

标签: java rx-java

在链obs1.flatmap(x -> obs2()).subscribe(sub)中,如果obs2产生错误,则会导致onError上的即时调用sub。这是记录在案的:

  

请注意,如果任何单个Observable映射到项目   来自flatMap的Observable通过调用onError来中止   flatMap生成的Observable本身会立即中止   调用onError。

但是可以忽略obs2错误并让obs1继续发出错误吗?

3 个答案:

答案 0 :(得分:10)

Rx为一些运营商提供了处理错误的方法。只需从obs2创建第三个Observable,它不会传播错误。

Observable<YourType> obs3 = obs2.onErrorResumeNext(Observable.<YourType>empty());
obs1.flatmap(x -> obs3)

答案 1 :(得分:4)

.onErrorResumeNext - 你可以使用它来尝试以不同的方式处理它,这样你就会传递先前发出的值,当处理时会产生错误到另一个observable,你可以尝试另一种方法。或者处理错误案例。

.onErrorReturn - 如果你没问题,只需返回一些默认值并忽略错误。

答案 2 :(得分:0)

你不能在obs2()内创建一个大型的试用博客,并将捕获博客留空吗?不会抛出任何错误,因此onError sub不会被调用,是吗?