Til*_*ill 5 rx-java rx-android rx-java2
我通过压缩并行执行多个HTTP调用。现在,其中0..n个显然可以失败。问题是,当例如2个呼叫几乎在确切的时间失败时,将处理错误1 doOnError,onErrorReturnItem但错误2会漏掉并导致异常。我认为如果错误2刚好出现而这两个onError运算符仍未完全处理错误1,就会发生这种情况。
可以使用以下简化代码来复制它:
buttonClick.flatMapSingle(action -> Single.zip(
Single.error(new Throwable("error 1")).delay(500, TimeUnit.MILLISECONDS),
Single.error(new Throwable("error 2")).delay(500, TimeUnit.MILLISECONDS),
(integer, integer2) -> true
)
.doOnError(t -> Timber.d(t.getMessage()))
.onErrorReturnItem(true))
.subscribe();
Run Code Online (Sandbox Code Playgroud)
因此,每隔一段时间就会抛出:
D/Main: error 1
W/System.err: java.lang.Throwable: error 2
Run Code Online (Sandbox Code Playgroud)
难道不应该Single.zip只允许发出一个错误吗?有一个更好的方法吗?
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |