我目前正在玩Kotlin协程和流程。在我的场景中,aMutableStateFlow
表示连接状态(CONNECTING, CONNECTED, CLOSING, CLOSED
)。也可以登录,注销并再次登录。
为了进一步使用连接,我必须检查状态并等待直到它变为CONNECTED
。如果已经存在CONNECTED
,我可以继续。如果没有,我必须等到状态达到CONNECTED
。该connect()
调用不会返回通过可更新回调马上,结果被传播MutableStateFlow
。我当前的想法是执行以下操作:
connect()
if (connectionState.value != State.CONNECTED) { // connectionState = MutableStateFlow(State.CLOSED)
suspendCoroutine<Boolean> { continuation ->
scope.launch { // scope = MainScope()
connectionState.collect {
if (it == State.CONNECTED) {
continuation.resume(true)
}
}
}
}
}
// continue
因为我对这个话题还很陌生,所以我不知道这是否是一个好习惯,而且在Kotlin文档中我也找不到一个更合适的概念。有更好的方法吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句