首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将协程Flow<List<T>>转换为List<T>

如何将协程Flow<List<T>>转换为List<T>
EN

Stack Overflow用户
提问于 2020-01-01 15:17:54
回答 2查看 6.2K关注 0票数 5

如何将kotlinx.coroutines.flow列表转换为普通数据类列表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-02 18:04:43

由于您希望从嵌套列表流转到单个列表,因此需要一个平面映射操作:

代码语言:javascript
复制
suspend fun <T> Flow<List<T>>.flattenToList() = 
        flatMapConcat { it.asFlow() }.toList()

用法示例:

代码语言:javascript
复制
suspend fun main() {
    val flowOfLists: Flow<List<Int>> = flowOf(listOf(1, 2), listOf(3, 4))
    val flatList: List<Int> = flowOfLists.flattenToList()
    println(flatList)
}
票数 15
EN

Stack Overflow用户

发布于 2020-01-01 17:40:14

当我们将Flow<List<T>>转换为List<T>时,我们需要返回List<T>。Flow是一种本机反应式编程解决方案,用于处理冷数据流。返回值是没有意义的,因为计算发生在不同的线程中。Reactive programming意味着消除returning value和基于data being receivedreact的想法。如果您仍然需要返回值,我们需要使用分块数据结构来计算该值,然后返回它。但是在Android世界中,阻塞并不是一个好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59550674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档