gpt4 book ai didi

android - 如何使用 kotlin 流程中的 flatMapMerge?

转载 作者:行者123 更新时间:2023-12-02 19:52:31 25 4
gpt4 key购买 nike

我有这段代码,我想让它更优化

我想我可以使用 kotlin-flow 的 flatMapMerge但我不认为我应该如何将我的代码转换为流

  val quiries = listof("s","b","s","g","d","r","t")
quiries.map { query ->
viewModelScope.launch {
val results = fetchColumns(query)
resultMutableData.postValue(results)
}
}

和fetchColumns()是挂起函数我在想也许我需要查询流程???? flatMapMerge()的使用方法是什么?

https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/flat-map-merge.html

最佳答案

尝试使用这样的东西:

listOf("s","b","s","g","d","r","t").asFlow()
.map { fetchColumns(it) }
.onEach { resultMutableData.postValue(it) }
.launchIn(viewModelScope)

因为你没有切换到另一个流程,所以不需要任何 flatMap* 功能,只需 map 就足够了。此外,map 参数已声明为 suspend,因此您不会阻塞您的线程。但是 map 运算符被设计为顺序处理数据,因此这些转换不会并行运行。要实现并行处理,可以使用使用 flatMapMerge 的解决方法:

listOf("s","b","s","g","d","r","t").asFlow()
.onEach { println("onEach: $it") }
.flatMapMerge {
flow {
emit(fetchColumns(it))
}
}
.onEach { resultMutableData.postValue(it)) }
.launchIn(viewModelScope)

关于android - 如何使用 kotlin 流程中的 flatMapMerge?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57857304/

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