Как возобновить поток после исключения - PullRequest
1 голос
/ 03 февраля 2020

У меня есть следующий код:

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 и переданы некоторые данные по умолчанию. Проблема в том, что сам поток отменяется и удаляется из подписчиков канала. Это означает, что любые новые события, предлагаемые каналу, будут игнорироваться, так как подписчиков больше нет.

Есть ли способ убедиться, что поток не отменяется в случае исключения?

...