У меня есть следующий код:
val channel = BroadcastChannel<Event>(10)
fun setup() {
scope.launch {
channel.asFlow().
.flatMapLatest { fetchSomeData() }
.catch { emit(DefaultData()) }
.onEach { handleData() }
.collect()
}
}
fun load() {
channel.offer(Event.Load)
}
В случае сбоя fetchSomeData
с исключением, он будет перехвачен catch
и переданы некоторые данные по умолчанию. Проблема в том, что сам поток отменяется и удаляется из подписчиков канала. Это означает, что любые новые события, предлагаемые каналу, будут игнорироваться, так как подписчиков больше нет.
Есть ли способ убедиться, что поток не отменяется в случае исключения?