如何将 kotlin 中的挂起函数和流程的结果结合起来?

And*_*er2 3 suspend reactive-programming kotlin kotlin-flow

伙计们想象我有这两个数据源:

val flowA: Flow<String>
suspend fun funB(): Int
Run Code Online (Sandbox Code Playgroud)

如何将两者的结果合并到一个流程中(比方说Flow<Pair<String, Int>>)?

下面的方法怎么样?有没有更好的办法?

combine(
  flowA,
  flow {emit(funB())}
) { a, b ->
  ...
}
Run Code Online (Sandbox Code Playgroud)

Joã*_*ias 5

假设您希望Int与 中的每个字符串进行相同的配对flowA,您可以按如下方式进行:

val funBResult = funB()
val pairs = flowA.map { it to funBResult }
Run Code Online (Sandbox Code Playgroud)

如果funB()实际上是一个以String作为参数的函数,您可以执行以下操作:

val pairs = flowA.map { it to funB(it) }
Run Code Online (Sandbox Code Playgroud)