本篇解析 example-flow-03.kt。探讨如何在异步场景下返回数据集合。
1. 代码解析
1 | suspend fun simple(): List<Int> { |
2. 特点与局限
- 非阻塞:使用了
delay而不是Thread.sleep,挂起时不会占用线程。 - 非流式:它必须等待 1 秒钟后,一次性返回
[1, 2, 3]。 - 无法实时展示:如果你希望在 1 秒后返回 1,再过 1 秒后返回 2,这种“细水长流”式的产出,普通的
List是无法做到的。
3. 开发者感悟
当数据量很大,或者每个数据的生成都比较耗时,这种“等全家到齐再出发”的集合模式会造成很长的白屏等待。我们需要一种既能“异步执行”,又能“一个一个产出”的工具,这就是 Flow 登场的原因。