kotlin - 如何从不同的函数发出 Flow 值? Kotlin 协程

标签 kotlin kotlin-coroutines kotlin-flow

我有一个流程:

val myflow = kotlinx.coroutines.flow.flow<Message>{}

并想用函数发出值:

override suspend fun sendMessage(chat: Chat, message: Message) {
    myflow.emit(message)
}

但是编译器不允许我这样做,有什么解决方法可以解决这个问题吗?

最佳答案

The answer of Animesh Sahu非常正确。您也可以返回 Channel作为流(参见 consumeAsFlowasFlow 上的 BroadcastChannel )。
但是还有一个东西叫 StateFlow Kotlin 团队目前正在开发中,部分目的是实现类似的行为,尽管它何时准备就绪尚不清楚。
编辑: StateFlow SharedFlow 已作为稳定 API ( https://blog.jetbrains.com/kotlin/2020/10/kotlinx-coroutines-1-4-0-introducing-stateflow-and-sharedflow/ ) 的一部分发布。当在异步执行上下文中需要状态管理时,可以并且应该使用这些工具。

关于kotlin - 如何从不同的函数发出 Flow 值? Kotlin 协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61655136/

相关文章:

Android - java.lang.IllegalStateException : Method addObserver must be called on the main thread

android - 如何在单击按钮时使用运行阻止

android - Android Kotlin协程:使用Global范围是否是反模式?

exception - Kotlin协程异常处理——如何抽象try-catch

kotlin - 在 StateFlow 中操作集合的正确方法

android - 从消费者发送消息到回调流

android - 获取 Flow 发出的最后一项并且不接收更新

java - Intellij 拒绝将 Kotlin 目标 jvm 设置为 1.8?

kotlin - 如何在 Kotlin 中将数据类转换为 ByteBuffer?

kotlin - 当使用两个包含相同类文件的 SDK 的 .aar 文件时,如何在 Kotlin 中解决这个重复的类?