首页 > 解决方案 > 如何在暂停的协程流中使用回调?

问题描述

我正在使用协程流程,我需要从非暂停回调中调用暂停的发射。我无法控制回调,也无法暂停该接口方法。是否有可能做到这一点?

import kotlinx.coroutines.flow.flow

fun foo() = flow {
    someLibraryObject.listenToSomeEvent(object: SomeCallback {
        override fun bar() {
            emit("Some result")
        }
    }
}

interface SomeCallback {
   fun bar()
}

标签: androidkotlinkotlin-coroutines

解决方案


在这种情况下可以使用callbackFlow 。请注意,它目前是实验性的。

fun foo() = callbackFlow {
    someLibraryObject.listenToSomeEvent(object: SomeCallback {
        override fun bar() {
             offer("Some result")
        }
    }
}

有关更多详细信息,您可以参考


推荐阅读