作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将 subscribeOn
与 flatMap
结合使用时,我得到了一个 UndeliverableException
。这个最小的例子说明了这个问题:
@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 会停止运行并取消订阅。
我只想在第一个 Observable 成功完成后订阅 flatMap
返回的第二个 Observable。
我如何用 RxJava 表达我的意图?
最佳答案
这似乎可行:
Observable.just(1, 2, 3)
.map(x -> Observable.error(new Exception("e" + x)))
.compose(xs -> Observable.concat(xs));
关于java - rxJava 2 无法交付异常与线程池和 flatMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008365/
我是一名优秀的程序员,十分优秀!