【发布时间】:2021-02-18 08:15:21
【问题描述】:
我对 collect 函数进行了基本测试以学习 kotlin 流程。
测试的时候有什么奇怪的,所以我留下了一个帖子
在流程块中,存在输入 3 个相同的发射值的情况。 然后,将收集到的数据输出到日志中。
代码内容:
flow {
emit(1)
emit(1)
emit(2)
emit(2)
emit(2)
emit(2)
emit(3)
emit(3)
emit(4)
emit(4)
emit(4)
emit(5)
}.collect {
println(it)
}
结果:
1
1
2
2
3
4
4
5
代码执行emit(2) 4 次和emit(4) 3 次。
但collect 只包含2 和4 2 次。
你知道为什么会这样吗?
【问题讨论】:
-
我认为你错了。在代码中,流和收集器在同一个协程中运行,因此它们必须按顺序工作。如果其中一个被暂停,它们会互相暂停。
标签: kotlin kotlin-coroutines kotlin-flow