将suspendCancellableCoroutine转换为callbackFlow



我有以下函数。

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
...
}
}
}

最新更新