【发布时间】:2022-09-29 17:22:17
【问题描述】:
作为标题,我有两个流程,需要先按顺序触发它们,然后组合结果。
data class User(
val name: String,
val age: Int,
)
data class UserStatus(
val status: String,
)
fun flow1() = flow {
delay(300L)
emit(User(\"Tony Stuck\", 50))
}
fun flow2(age: Int) = flow {
val result = when {
age > 60 -> \"Over 60\"
age < 60 -> \"Under 60\"
else -> \"Equal 60\"
}
delay(500L)
emit(UserStatus(result))
}
// The code below isn\'t what I expected
flow1.flatMapMerge {
flow2(it.age)
}
.collect {
// here I get **UserStatus**, but I want Pair(User, UserStatus)
}
我试过使用平面地图合并,但它最终会映射到flow2,我期望得到的是Pair(User,UserStatus),有没有更好的方法来提供这个?
标签: android kotlin coroutine kotlin-flow