我需要创建一个 API,它应该是流,它收集事件。问题是这些事件可能来自一个通道(我需要一个用于 PublishSubject 的模拟)和一个流(它执行网络请求)。
我也不确定这是否是最好的解决方案,所以让我知道我是否可以做得更好。
我在做什么:
我的 API:
override val statusFlow = trackStatus()
private fun trackStatus(): Flow<State> = flow { ... }
private val deviceChannel = Channel<State>(CONFLATED)
所以 statusFlow 应该返回一个流,我可以从中接收来自流和通道的数据。
我试图通过consumeAsflow将通道转换为流,但它不起作用。
我看到一个解决方案
private fun trackStatus(): Flow<State> = flowOf(channel.toFlow(), flow).flattenMerge()
正确的方法是什么?