如何在 kotlin 中结合挂起函数和流的结果?
Posted
技术标签:
【中文标题】如何在 kotlin 中结合挂起函数和流的结果?【英文标题】:How to combine results from a suspend function and a flow in kotlin? 【发布时间】:2021-12-28 15:18:48 【问题描述】:大家想象我有这两个数据来源:
val flowA: Flow<String>
suspend fun funB(): Int
如何将两者的结果组合成一个流程(比如Flow<Pair<String, Int>>
)?
下面的方法怎么样?有没有更好的办法?
combine(
flowA,
flow emit(funB())
) a, b ->
...
【问题讨论】:
你想把同一个 Int 和所有字符串放在一起吗? 【参考方案1】:假设您希望与flowA
中的每个字符串配对相同的Int
,您可以按如下方式进行:
val funBResult = funB()
val pairs = flowA.map it to funBResult
如果funB()
实际上是一个将String
作为参数的函数,您可以执行以下操作:
val pairs = flowA.map it to funB(it)
【讨论】:
以上是关于如何在 kotlin 中结合挂起函数和流的结果?的主要内容,如果未能解决你的问题,请参考以下文章
kotlin 升级到 1.6.0 后如何在 Room Dao 中使用挂起修饰符?
Kotlin 挂起函数在调用 java 时丢失 ReactiveSecurityContext
Kotlin 协程Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )