我有一个“流源”,我想给予一个“消费者”一个SharedFlow,我想让一些消费者能够响应流中的数据,其他消费者也会向流发出数据,每当数据向流发出时,我想用onEach记录它。
class FlowSource {
public dataFlow: MutableSharedFlow<Data> = MutableSharedFlow(0, 5).forEarch {Log(it}}
}
上面的返回一个错误,因为.onEach返回一个新的Flow。如果我尝试使用.shareIn(xxxx),它会创建一个SharedFlow,而不是一个Mutable共享流。我如何返回一个已经添加了.onEach逻辑的MutableSharedFlow,以便我不必在消费者上添加.onEach?
1条答案
按热度按时间ojsjcaue1#
是的,没有办法直接创建一个内置了副作用的MutableSharedFlow。你基本上必须给予它一个收集器来执行额外的操作。类似这样:
上面的
someCoroutineScope
需要是一个适当的作用域,当这个dataFlow
超出作用域时,它会被取消,这样我们就不会泄漏它。