rxJava 2与线程池和flatMap无法传递的异常

时间:2017-07-10 09:27:14

标签: java rx-java rx-java2

我在DataContextUndeliverableException合并时获得了subscribeOn。这个最小的例子说明了这个问题:

flatMap

我预计在第一个错误被触发后,Observable会停止运行并取消订阅。

我只想订阅第一个成功完成后@Test public void flatMapException() throws ExecutionException, InterruptedException { SettableFuture<Boolean> f = SettableFuture.create(); Observable.just(1,2).flatMap(x -> { return Observable.just(1).flatMap(z -> { if (z == 1) return Observable.error(new IOException("haha")); return Observable.just(1); }).subscribeOn(Schedulers.computation()); }).onErrorReturnItem(1).subscribeOn(Schedulers.computation()).subscribe( x -> {}, e -> { f.set(true); }, () -> { f.set(true); }); assertEquals(true, f.get()); } 返回的第二个Observable。

我如何用RxJava表达我的意图?

1 个答案:

答案 0 :(得分:1)

这似乎有效:

Observable.just(1, 2, 3)
  .map(x -> Observable.error(new Exception("e" + x)))
  .compose(xs -> Observable.concat(xs));