【发布时间】:2020-04-05 18:41:15
【问题描述】:
是否可以在流创建后为其添加值?
到目前为止,我已经看到了流构建器示例,其中构建器定义了将发出哪些值以及何时发出。但是,如果我需要创建一个流并在生成任何值之前在 UI 层上订阅它怎么办。然后我需要在不同的层(例如域)中为其添加值。所以我想我会创建一个空的流程构建器,然后添加值,但它不起作用。此模型适用于 Channels,但我不想使用已弃用的 API,请参见下文。我想要一种可以连接域和 UI 层并且可以观察到的机制。 Channels 的另一个问题是我无法清除其中的数据,最后一个值似乎总是留在那里。
private val channel = ConflatedBroadcastChannel<Data>()
override val flow: Flow<Data> = flow {
channel.consumeEach { data ->
this.emit(data)
}
}
override suspend fun setGraph(domainData: Data) {
channel.send(domainData)
}
【问题讨论】: