我有以下函数。
suspend fun result() = suspendCancellableCoroutine<Int> {continuation ->
val callback = object : Callback {
continuation.resume(value)
}
}
然后我在一个推论中调用结果如下:
someCoroutine {
when (result()){
x -> doSomething
y -> doSomething
...
}
}
它有效,但当它再次调用时,我一直收到错误:
未捕获的异常:已恢复,但建议进行更新。
我想我需要一个callbackFlow,但我不太确定如何实现它。
suspend fun result() = callbackFlow<Int> {
val callback = object : Callback {
trySendBlocking(value)
}
awaitClose()
}
我想我必须使用collect((,但我不知道如何在协同程序中处理它。如有任何帮助,我们将不胜感激。
要使用Flow
发出的值,您需要使用其中一个终端运算符,例如collect
:
coroutineScope.launch {
result().collect { value ->
when (value) {
x -> doSomething
y -> doSomething
...
}
}
}