Kotlin 创建自定义协程

Kotlin create a custom coroutine

我正在尝试用我拥有的方法制作协程。 为简单起见,假设我有一个 class A,我尝试 connect(),它仅在 A 内的 class B 连接后才连接。

所以,我有这个代码,例如,哪个offcourse不起作用但它只是为了展示我的用例-

class A {
    fun connect() {
        classB.connect()
        val isConnected = classB.isConnected
    }
}

class B {
    val isConnected: Boolean = false
    fun connect() {
        someObject.connect( SomeListenerInterface {
            override fun onSuccess() {
                isConnected = true
            }
        })
    }
}

我想把 classB.connect() 做成一个协程,让它挂起,所以只有当它完成时, val isConnected = classB.isConnected 的行才会执行,并且值会被正确设置。

如果我要使用 java 和回调,我只需将回调传递给 classB.connect() 方法,并在该回调中设置 class A.isConnected 值。

kotlin 协同程序是否可行? 谢谢

使用 suspendCoroutine 将回调转换为挂起函数。连接成功后returnstrue下面的函数:

class B {
    suspend fun connect(): Boolean = suspendCoroutine { continuation ->
        someObject.connect(object : SomeListenerInterface {
            override fun onSuccess() {
                continuation.resume(true)
            }
        })
    }
}

connect函数在class A中应该分别是suspend

class A {
    suspend fun connect() {
        val isConnected = classB.connect()
    }
}