[英]How to use callback from within a suspended coroutine flow?
I am using coroutines flow and I need to call a suspended emit from within a non-suspended callback.我正在使用协程流程,我需要从非暂停回调中调用暂停的发射。 I don't have control over the callback and can't make that interface method suspended.
我无法控制回调,也无法暂停该接口方法。 Is it possible to do this?
是否有可能做到这一点?
import kotlinx.coroutines.flow.flow
fun foo() = flow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
emit("Some result")
}
}
}
interface SomeCallback {
fun bar()
}
callbackFlow can be used in this case.在这种情况下可以使用callbackFlow 。 Note that it's currently experimental.
请注意,它目前是实验性的。
fun foo() = callbackFlow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
offer("Some result")
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.