当前位置: 首页> 财经> 股票 > billwang工业设计_廊坊视频优化方案_搜索引擎优化培训班_企业员工培训课程内容

billwang工业设计_廊坊视频优化方案_搜索引擎优化培训班_企业员工培训课程内容

时间:2025/8/23 5:31:32来源:https://blog.csdn.net/weixin_39170886/article/details/142482001 浏览次数:0次
billwang工业设计_廊坊视频优化方案_搜索引擎优化培训班_企业员工培训课程内容

1 创建flow

方式1
通过携程扩展函数FlowKt中的flow扩展函数可以直接构建flow,只需要传递FlowCollector收集器实现类就可以了

private fun create1(){val intFlow = createFlow()println("创建int flow: $intFlow")runBlocking {println("开始收集")intFlow.collect {println(it)}println("收集结束")}}/*** 创建flow 方式1*/private fun createFlow(): Flow<Int> = flow {delay(1000)emit(1)delay(1000)emit(2)delay(1000)emit(3)}

通过该flow扩展函数可以了解到如下信息
函数定义泛型时需要将泛型放到fun 和函数名中间
例如

public fun <T> flow(@kotlin.BuilderInference block: suspend kotlinx.coroutines.flow.FlowCollector<T>.() -> kotlin.Unit)

定义好之后,函数中传参也可以使用该泛型继续向下传递,例如这里传递给了FlowCollector接口,用于规定flow收集器应该发送什么数据给调用方

方式2

private fun create2() {// 创建flow 方式2println("创建flow 方式2")val flow2 = flowOf(1, 2, 3).onEach {delay(1000)}runBlocking {flow2.collect {println(it)}}}

flowof 扩展函数其实内部也是调用flow扩展函数,只不过flowof是将传递进来的可变参数,遍历了一遍,并且调用flow收集器的emit方法发送取出而已

方式3

 private fun create3() {println("创建flow 方式3")runBlocking {val flow3 = listOf(1,2,3).asFlow().onEach {delay(1000)}flow3.collect {println(it)}}}

调用list顶级接口类Iterable的asFlow方法,其实内部还是调用了flow扩展函数,将元素遍历之后emit出去的

2 取消或中断flow

 // 测试Flow的取消 取消Flow只需要取消它所在的携程即可private fun testCancelFlow() {runBlocking {withTimeoutOrNull(250){simple().collect{value -> println(value) }}println("Done")}}
关键字:billwang工业设计_廊坊视频优化方案_搜索引擎优化培训班_企业员工培训课程内容

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: