考虑这个例子: 我有一个按顺序下载的文件。如果一次下载失败,则应移至下一个。 伪代码:
Observable.from(urls)
.concatMap(url -> downloadObservable(url))
如果下载失败,则无法移至下一个网址。
无法使用 onErrorResumeNext()
跳过,因为我只想移至下一个网址。有人可以帮忙吗?
最佳答案
从 1.3 开始,有一个用于此目的的运算符:concatMapDelayError
。一般来说,如果有一个原因错误可能会延迟到所有源都被完全消耗掉,那么可能有一个 opNameDelayError
运算符。
Observable.from(urls)
.concatMapDelayError(url -> downloadObservable(url))
.doOnError(error -> {
if (error instanceof CompositeException) {
System.out.println(((CompositeException)error).getExceptions().size());
} else {
System.out.println(1);
}
});
(doOnError
附录来自 RxJava 问题列表上更新的 OP cross post。)
关于java - ConcatMap 没有选项并跳过错误 - RxJava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111319/