kotlin - 如何在作用域之间共享 BroadcastChannel?
问题描述
我有一个BroadcastChannel
作为缓冲区。我在一个范围内发送值,并希望在另一个范围内使用流来观察它们。
我的代码是:
val channel = BroadcastChannel<Int>(1)
val observable = channel.asFlow()
someScope.launch {
channel.send(42)
}
otherScope.launch {
observable.collect {
print(it)
}
}
一些信息:
- otherScope 的寿命比 someScope 长
- 在同一范围内收集时,我收到了值
解决方案
问题collect
在于阻止其他集合的操作员。已替换为onEach
andlaunchIn
一切都按预期工作
推荐阅读
- python - 熊猫操纵合并的 DF 以解决聚合问题
- spring-boot - 如何从自定义 Webclient Builder 获取 webflux webClient 指标
- xamarin.forms - 仍然收到 ITMS-90809:使用 --optimize=force-rejected-types-removal 后已弃用的 API 使用
- reactjs - 如何让我部署的 Web 应用程序找到我的静态文件?
- programming-languages - 寻找跨平台语言
- python - 哪个数据库可以容纳一种类型的数据的巨大列表?
- python-3.x - 找不到任何pip2,要使用pip。pip 需要安装
- javascript - 如何知道数组中的最后一个对象?角度(角度材料选项卡)
- python - 在 QProcess 中设置不同格式的参数
- node.js - mongodb副本集如何与nodejs-mongoose一起工作?