暂停Kotlin协程,直到流具有特定值

LN-12

我目前正在玩Kotlin协程和流程。在我的场景中,aMutableStateFlow表示连接状态(CONNECTING, CONNECTED, CLOSING, CLOSED)。也可以登录,注销并再次登录。

为了进一步使用连接,我必须检查状态并等待直到它变为CONNECTED如果已经存在CONNECTED,我可以继续。如果没有,我必须等到状态达到CONNECTEDconnect()调用不会返回通过可更新回调马上,结果被传播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文档中我也找不到一个更合适的概念。有更好的方法吗?

Animesh Sahu

前一段时间我有同样的问题:

在此处输入图片说明

最好使用first()暂停直到谓词匹配。

if (connectionState.value != State.CONNECTED) {
    connectionState.first { it == State.CONNECTED }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有Kotlin协程的FusedLocationProviderClient

来自分类Dev

对Kotlin与协程有关的暂停功能感到困惑

来自分类Dev

如何在暂停的协程流中使用回调?

来自分类Dev

Kotlin协程壁垒:等待所有协程完成

来自分类Dev

如何在通知之前暂停Kotlin协程

来自分类Dev

Kotlin协程列表返回空值

来自分类Dev

具有导致netty.RoutingInBoundHandler的暂停功能的控制器-java.lang.NoClassDefFoundError:kotlinx /协程/ ThreadContextElement

来自分类Dev

在Kotlin Multiplatform中使用协程的具有可变变量的IOS上的InvalidMutabilityException

来自分类Dev

Kotlin协程流中的RxJava .toList()等效项

来自分类Dev

暂停多个嵌套协程

来自分类Dev

暂停协程功能,直到它接收结果,然后继续

来自分类Dev

NetworkBoundResource与Kotlin协程

来自分类Dev

每当设备恢复活动状态时,带有空间的Kotlin协程流将再次运行

来自分类常见问题

Kotlin协程:与工作计划有关。(invokeOnCompletion)

来自分类Dev

遇到特定值时暂停流

来自分类Dev

在Kotlin中测试协程

来自分类Dev

Kotlin 协程范围定义

来自分类Dev

Kotlin 协程,持续更新

来自分类Dev

是否有从协程端点返回值的标准方法

来自分类Dev

是否有从协程端点返回值的标准方法

来自分类Dev

有没有办法待在协程中,直到满足条件?

来自分类Dev

如何从Kotlin协程流中的几个发射中仅发射一个结果?

来自分类Dev

跨片段收集的协程流

来自分类Dev

调用并行协程并等待所有协程结束

来自分类常见问题

Kotlin协程如何比RxKotlin更好?

来自分类Dev

关于Kotlin协程取消的问题

来自分类Dev

Kotlin协程主管取消作业的行为

来自分类Dev

未解决的参考:等待。Kotlin协程

来自分类Dev

Kotlin协程-延迟,如何运作?

Related 相关文章

热门标签

归档