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()
}
}
我正在尝试用我拥有的方法制作协程。
为简单起见,假设我有一个 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()
}
}