我在DataContext
与UndeliverableException
合并时获得了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表达我的意图?
答案 0 :(得分:1)
这似乎有效:
Observable.just(1, 2, 3)
.map(x -> Observable.error(new Exception("e" + x)))
.compose(xs -> Observable.concat(xs));