如何创建具有多个异步函数的单个 Kotlin 流函数

How to create single Kotlin flow function with multiple asynchronous functions

有多个异步函数相互依赖。

考虑函数 functionA()、functionB()、functionC()。

函数B将根据函数A的响应回调进行调用,函数C将根据函数B的响应回调进行调用。

现在我想使用 Kotlin 中的流函数将每个函数的结果作为流发送。

有什么实现上述功能的建议吗?

谢谢 萨蒂亚

这对于 flow 生成器来说非常简单。当您收集此 Flow 时,它会依次调用每个函数。

val results: Flow<ResultType> = flow {
    emit(functionA())
    emit(functionB())
    emit(functionC())
}

我不确定你是不是说结果应该基于之前函数调用的 return 值。如果是这样,那么您可以使用 if 语句。


val results: Flow<ResultType> = flow {
    val resultA = functionA()
    if (!resultA.someCriteria) {
        return@flow
    }
    emit(resultA)
    val resultB = functionB(resultA)
    emit(resultB)
    //...
}