mergeDelayError()
このAndroid Kotlinコードには、タイムアウトのあるより大きなものにマージされたcompletablesのリストがあります。タイムアウトに達すると、java.util.concurrent.TimeoutException: The source did not signal an event for 250 milliseconds and has been terminated.
リスト上の小さな補完可能なもののどれが、何も通知/発行せずにタイムアウトに達したかをどのように確認できますか (実際のリストには 2 つ以上の BTW があります)。私の理想的な解決策は、そのような例外を次のようなものに置き換えるException: The following operations reached a timeout: Check initial settings, Check server
か、少なくともタイムアウトした各補完可能ファイルによって出力される特定のログ行です。
これを行う方法がわかりません。私の最初の推測では、「didEmit」フラグを各コンプリータブルに追加し、大きなコンプリータブルでタイムアウトに達したときにそれらを 1 つずつチェックするだけですが、それは私には悪い解決策のように思えます。
どんなアイデアでも大歓迎です。ありがとうございました。
val smallCompletable1 = controller
.checkInitialSettings()
.doOnError {
logError(it)
}
.ignoreElement()
val smallCompletable2 = controller
.checkServerStatus()
.doOnError {
logError(it)
}
.ignoreElement()
val myCompletables: List<Completable> = listOf(
smallCompletable1,
smallCompletable2
)
val bigDisposable = Completable
.mergeDelayError(myCompletables)
.timeout(250, TimeUnit.MILLISECONDS)
.subscribe(this::handleAllSucceeded, this::handleError)
composition.add(bigDisposable)