You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flatMapLatest搭配emptyFlow时firstOrNull未返回值的问题咨询

flatMapLatest搭配emptyFlow时firstOrNull未返回值的问题咨询

我最近在使用flatMapLatest、emptyFlow和firstOrNull时遇到了个费解的问题,想跟大家请教下原因。

先给大家看两个对比场景:

场景A:直接调用emptyFlow的情况

val dataFlow: Flow<Boolean> = emptyFlow()

launch {
    val data = dataFlow.firstOrNull()  // 返回data = null
}

这个场景里firstOrNull表现正常,直接返回了null,完全符合预期。

场景B:通过flatMapLatest返回emptyFlow的情况

val rootFlow: MutableStateFlow<Boolean?> = MutableStateFlow(null)
val dataFlow: Flow<Boolean> = rootFlow.flatMapLatest {
    emptyFlow()
}

launch {
    val data = dataFlow.firstOrNull()  // 一直阻塞,没有返回任何值
}

可到了这个场景,firstOrNull就卡住不动了,完全不返回值。我已经确认flatMapLatest确实被触发了,而且传入的是rootFlow初始的null值。

所以我的疑问是:为什么场景B里的firstOrNull不会返回值呢?

备注:内容来源于stack exchange,提问作者robyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:03:07