如上所述,我想按顺序连接两个流,因此merge不起作用.

示例:

val f1 = flowOf(1, 2)
val f2 = flowOf(3, 4)
val f = concatenate(f1, f2) // emits 1, 2, 3, 4

推荐答案

您可以使用flattenConcat:

fun <T> concatenate(vararg flows: Flow<T>) =
    flowOf(*flows).flattenConcat()

flow建筑商:

fun <T> concatenate(vararg flows: Flow<T>) = flow {
    for (flow in flows) {
        emitAll(flow)
    }
}

Kotlin相关问答推荐

如何避免使用公共类实现内部接口

Kotlin:将泛型添加到列表任何>

使函数同时挂起和取消挂起

为什么在jacksonObjectMapper上将DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES设置为false无效?

Kotlin:我可以将函数分配给 main 的伴随对象中的变量吗?

Kotlin 中获取类简单名称的最佳实践

为什么没有remember 的 mutableStateOf 有时会起作用?

Kotlin 中列表或数组的乘积

Kotlin:内部类如何访问在外部类中声明为参数的变量?

如何从 Firestore 查询中排除元素?

如何在 kotlin 的片段类中更改 ActionBar 标题?

片段内的 Kotlin 按钮 onClickListener 事件

如何将vararg转换为list?

Android EditText 协程go 抖操作符,如 RxJava

如何让数据类在Kotlin中实现接口/扩展超类属性?

spring.config.location 在 Spring Boot 2.0.0 M6 上不起作用

在android的默认浏览器 Select 列表中添加我的浏览器?

从另一个列表创建一个列表

Kotlin 错误:public function exposes its 'public/*package*/' return type argument

java.lang.NoClassDefFoundError:解析失败:Lkotlin/time/MonoClock