У меня есть этот код Android Kotlin со списком комплементов, которые объединены в более крупный с mergeDelayError()
, у которого есть тайм-аут. По истечении времени ожидания я получаю java.util.concurrent.TimeoutException: The source did not signal an event for 250 milliseconds and has been terminated.
Как я могу определить, какая из небольших комплементов в списке достигла тайм-аута, ничего не сигнализируя/излучая (фактический список имеет более двух BTW). Моим идеальным решением было бы заменить такое исключение чем-то вроде: Exception: The following operations reached a timeout: Check initial settings, Check server
или, по крайней мере, определенной строкой журнала, распечатываемой каждым комплементом с истекшим временем ожидания.
Я понятия не имею, как это сделать. Мое первое предположение было бы просто добавить флаг «didEmit» к каждому комплементу и проверять их один за другим, когда истечет время ожидания на большом комплементе, но мне это кажется плохим решением.
Любые идеи приветствуются. Спасибо.
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)