gpt4 book ai didi

android - Kotlin Flow 如何组合两个流并仅在第一个流发送元素时发出结果

转载 作者:行者123 更新时间:2023-12-04 23:55:57 26 4
gpt4 key购买 nike

有两个流:FlowA 和 FlowB。

我想组合它们并仅在 FlowA 发出元素时从 FlowA 获取最新元素并从 FlowB 获取最新元素。这就像组合 FlowA 和 FlowB,但仅在 FlowA 发出元素时触发组合流。

最佳答案

如果 flowA 不包含重复元素,或者如果您可以“不触发”A 的重复元素,则可以使用 zip 实现您想要的效果和 distinctUntilChangedBy像这样:

val flowA = flowOf("a", "b", "c")
val flowB = flowOf(1, 2, 3)

val resultFlow = flowA.zip(flowB)
.distinctUntilChangedBy { (a, _) -> a }
.map { (a, b) -> TODO("combine a and b") }

另一种选择是从 B 中创建一个 StateFlow 并在需要时访问最新值(但它需要一个范围来收集状态中的 B,因此它使这段代码变得半热):

val flowA = flowOf("a", "b", "c")
val flowB = flowOf(1, 2, 3)

val stateB = flowB.stateIn(someScope)
val resultFlow = flowA.map { a ->
val b = stateB.value
TODO("combine a and b")
}

关于android - Kotlin Flow 如何组合两个流并仅在第一个流发送元素时发出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68831421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com