gpt4 book ai didi

kotlin-coroutines - 如何在 Kotlin Flow 中过滤列表

转载 作者:行者123 更新时间:2023-12-03 14:08:24 26 4
gpt4 key购买 nike

我正在使用 RxJavaCoroutinesFlow 替换我当前的实现。我在使用一些 Flow 运算符时遇到了一些麻烦。

我正在尝试过滤 Flow 中的项目列表,然后再提供它以供收集。 ( Flow<List<TaskWithCategory>> )

这是 Rx2 上的示例:

        repository.findAllTasksWithCategory()
.flatMap {
Flowable.fromIterable(it)
.filter { item -> item.task.completed }
.toList()
.toFlowable()

在上面的实现中,我提供了一个由 TaskWithCategory 过滤的 Task 列表,这些过滤已经完成。

如何使用 Flow 实现这一点?

最佳答案

鉴于使用的唯一运算符是 filter,内部流动是不必要的,这使得流程实现非常简单:

repository.findAllTasksWithCategoryFlow()
.map { it.filter { item -> item.task.completed } }

如果更多地涉及内部转换(让我们使用 transform: suspend (X) -> TaskWithCategory ):
repository.findAllTasksWithCategoryFlow()
// Pick according to desired backpressure behavior
.flatMap(Latest/Concat/Merge) {
// Scope all transformations together
coroutineScope {
it.map { item ->
// Perform transform in parallel
async {
transform(item)
}
}.awaitAll() // Return when all async are finished.
}
}

关于kotlin-coroutines - 如何在 Kotlin Flow 中过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59445105/

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