如何在 kotlin 中结合暂停函数和流程的结果?

How to combine results from a suspend function and a flow in kotlin?

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

val flowA: Flow<String>
suspend fun funB(): Int

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

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

combine(
  flowA,
  flow {emit(funB())}
) { a, b ->
  ...
}

假设您想要将相同的 IntflowA 中的每个字符串配对,您可以按如下方式进行:

val funBResult = funB()
val pairs = flowA.map { it to funBResult }

如果 funB() 实际上是一个以 String 作为参数的函数,你可以这样做:

val pairs = flowA.map { it to funB(it) }