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
相关产品推荐
相关产品推荐

