本篇解析 example-flow-09.kt。学习 Flow 中最灵活的转换工具:transform。
1. 核心概念
transform 操作符是 map 和 filter 的超集。它允许你:
- 多次发射:在处理一个输入值时,可以调用多次
emit。 - 条件发射:模拟
filter的逻辑。 - 异步发射:内部可随意调用挂起函数。
2. 代码解析
1 | (1..3).asFlow() |
- 灵活性:在这个例子中,每个请求都对应了两条产出。这种“一变多”的逻辑是
map无法实现的(map只能一变一)。
3. 开发者感悟
在处理复杂的 API 转换时,transform 非常好用。比如在请求之前先发射一个“加载中”状态,请求完再发射结果。它比 map 更强大,能让你更精细地控制数据流的输出。