如何在挂起的协程流中使用回调?
How to use callback from within a suspended coroutine flow?
我正在使用协程流,我需要从非暂停回调中调用暂停发射。我无法控制回调,也无法暂停该接口方法。可以这样做吗?
import kotlinx.coroutines.flow.flow
fun foo() = flow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
emit("Some result")
}
}
}
interface SomeCallback {
fun bar()
}
在这种情况下可以使用 callbackFlow。请注意,它目前处于试验阶段。
fun foo() = callbackFlow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
offer("Some result")
}
}
}
详情请参考this
我正在使用协程流,我需要从非暂停回调中调用暂停发射。我无法控制回调,也无法暂停该接口方法。可以这样做吗?
import kotlinx.coroutines.flow.flow
fun foo() = flow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
emit("Some result")
}
}
}
interface SomeCallback {
fun bar()
}
callbackFlow。请注意,它目前处于试验阶段。
fun foo() = callbackFlow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
offer("Some result")
}
}
}
详情请参考this