emptyFlow<Int>() channelFlow 在一般的flow在构造代码中不允许切换线程,ChannelFlow则允许内部切换线程 //构建val channelFlow=channelFlow<String>{send("hello")withContext(Dispatchers.IO){send("channel flow")}}//监听coroutineScope.launch{signEvent.collect{value->println(value)}} 末端操作符 collect 触发...
https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/channel-flow.html 在一般的flow在构造代码块中不允许切换线程,ChannelFlow则允许内部切换线程。 //构建 val channelFlow = channelFlow<String> { send("hello") withContext(Dispatchers.IO) { send("channel flow...
onCompletion操作符在flow中类似finally的作用,但是可以获取到异常 funtestOnCompletion()=runBlocking<Unit>{flow<Int>{emit(1)throwArithmeticException("Num error")}.onCompletion{exception->//可以获取到异常信息,但是不捕获异常println("onCompletion$exception")}.catch{e:Throwable->println("catch$e")}.flowO...
flowOf(1,2,3).fold(10){acc,value->acc+value}// Produces 16 扁平化操作符 1、 flatMapConcat: 将流的每个元素转换为流,然后按顺序连接这些流。 代码语言:javascript 复制 flowOf(1,2).flatMapConcat{flowOf(it,it+1)}// Produces 1, 2, 2, 3 2、 flatMapMerge: 将流的每个元素转换为流,然后...
转换操作符 1. map:描述:转换流中的每个元素。示例代码:flowOf(1, 2, 3).map { it * it } .collect { println(it) } // 输出: 1, 4, 9 2. filter:描述:过滤流中的元素,只保留满足条件的元素。示例代码:flowOf(1, 2, 3).filter { it % 2 == 1 } .collect { println(it) } //...
一、末端操作符 1、collect 操作符 2、reduce 操作符 3、single 操作符 4、first 操作符 5、fold 操作符 6、toList 操作符 7、toSet 操作符 一、末端操作符 末端操作符 指的是 在 Flow 流最末端 调用 挂起函数 收集元素 的操作符 , 最常见的 末端操作符 就是 collect 操作符 ; 常见的末端操作符 : ...
本次我们主要介绍Flow常用的操作符使用和原理,下面先看下操作符表格,了解下每个操作符的作用。 asFlow()将Rang或者List等转换为Flow map() 映射一次Flow发射的数据,只能变换发射的值 transform() 类似于Map,但是它可以控制Flow的发射 take() 控制Flow发射的数量,比如原始emit 3个,take(1)可以限制只发射1个 combin...
终止操作符 1、collect: 终止流的操作符,启动流的收集,并处理每个发射的元素。 flowOf(1,2,3).collect { println(it) }// Prints 1, 2, 3 2、first: 仅收集第一个元素的值。 valfirstElement = flowOf(1,2,3).first()// 1 3、toList: ...
reduce 操作符不能变换数据类型。比如,Int 集合的结果不能转换成 String 结果。 2. fold fold 和 reduce 很类似,但是 fold 可以变换数据类型 有时候,我们不需要一个结果值,而是需要继续操 flow,可使用 runningFold 。 flowOf(1, 2, 3).runningFold("a") { a, b -> ...
• 中间操作符 一般来说是用来执行一些操作,不会立即执行,返回值还是个Flow。 • 末端操作符 会触发流的执行,返回值不是Flow。 创建Flow flow https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/flow.html ...