gpt4 book ai didi

android - 如何使用 Kotlin Flow 从异步回调中发出数据?

转载 作者:行者123 更新时间:2023-12-03 18:43:13 25 4
gpt4 key购买 nike

我开始学习 Kotlin Flow 和 Coroutines,但我不知道如何使下面的代码工作。我究竟做错了什么?

interface MessagesListener {
fun onNewMessageReceived(message: String)
}

fun messages(): Flow<String> = flow {

val messagesListener = object : MessagesListener {
override fun onNewMessageReceived(message: String) {

// The line below generates the error 'Suspension functions can be called only within coroutine body'

emit(message)
}
}

val messagesPublisher = MessagesPublisher(messagesListener)
messagesPublisher.connect()
}

最佳答案

我相信你应该可以使用callbackFlow ....就像是:

fun messages(): Flow<String> = callbackFlow {

val messagesListener = object : MessagesListener {
override fun onNewMessageReceived(message: String) {
trySend(message)
}
}

val messagesPublisher = MessagesPublisher(messagesListener)
messagesPublisher.connect()
}

关于android - 如何使用 Kotlin Flow 从异步回调中发出数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64623712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com