У меня есть этот код 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)