RxJava2:压缩的可观察变量中的多个错误引发异常

Til*_*ill 5 rx-java rx-android rx-java2

我通过压缩并行执行多个HTTP调用。现在,其中0..n个显然可以失败。问题是,当例如2个呼叫几乎在确切的时间失败时,将处理错误1 doOnErroronErrorReturnItem但错误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只允许发出一个错误吗?有一个更好的方法吗?