我有以下代码:
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
并传递一些默认数据。问题是流程本身被取消并且正在从频道的订阅者中删除。这意味着提供给频道的任何新事件都将被忽略,因为不再有任何订阅者。
有没有办法确保在发生异常时流程不会被取消?