当前位置: 首页 > news >正文

网站建设开发报价杭州网站建设hzfwwl

网站建设开发报价,杭州网站建设hzfwwl,合肥seo推广培训班,如何做产品网站网页1 创建flow 方式1 通过携程扩展函数FlowKt中的flow扩展函数可以直接构建flow#xff0c;只需要传递FlowCollector收集器实现类就可以了 private fun create1(){val intFlow createFlow()println(创建int flow: $intFlow)runBlocking {println(开始收集只需要传递FlowCollector收集器实现类就可以了 private fun create1(){val intFlow createFlow()println(创建int flow: $intFlow)runBlocking {println(开始收集)intFlow.collect {println(it)}println(收集结束)}}/*** 创建flow 方式1*/private fun createFlow(): FlowInt 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.FlowCollectorT.() - 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) { // 在 250 毫秒后超时simple().collect { value - println(value) }}println(Done)}}fun simple(): FlowInt flow {for (i in 1..3) {delay(100)println(Emitting $i)emit(i)}}通过withTimeoutOrNull 函数可以实现取消flow携程功能 通过该功能可以处理类似于某些场景下的超时机制兜底逻辑等例如 在30秒内处理不完数据状态的转换就直接结束当前处理只展示处理过后的数据就可以了。因为有些场景下数据量较大用户等待时间太长的情况下一般用户无法接受所以只能采用妥协的方式来规定一个最大等待时间来处理该组数据。一般会用在对数据做某种优化处理但这种处理即使处理不完的情况下产品也能接受的情况下才会采用该方案。否则不建议执行兜底方案处理。 3 Flow 操作符 collect 是Flow中最常用最基础的末端操作符主要用于Flow启动流的挂起函数。除了collect还有一些其他的操作符例如 转换为各种集合的操作符 toList/toSet/toCollection用于流元素计算的操作符reduce / fold计算数量的操作符count用于切换协程作用域线程的操作符launcherIn/productIn/broadcastIn, 这里的productIn以及broadcastIn 暂时没有了解清楚其用法和作用暂时放在这里 collect 操作符使用 collect 是Flow最基础的操作符大多数场景下都会使用它来收集Flow中生产的数据信息 runBlocking {listOf(1,2,3,4,5).asFlow().collect { value - println(value) }}reduce 操作符使用 作用1 用于数据求和 private fun testReduce() {runBlocking {val num listOf(1,2,3,4,5).asFlow().reduce { a, b - a b }println(求和的结果$num)}}作用2用于求最大值 private fun testReduce1() {runBlocking {val maxNum listOf(1, 5, 2, 4, 5, 6, 3).asFlow().reduce { a, b -if (a b) a else b}println(求集合中的最大值${maxNum})}}fold 操作符使用 fold 也是用于计算的操作符只不过fold可以设置累加器的初始值与reduce相比 多一个设置初始值的操作 private fun testFold() {runBlocking {val sum (1..5).asFlow().fold(100) { a, b - a b }println(设置初始值后的累加结果$sum)}}launchIn 操作符使用 launchIn用于指定协程作用域如果单独看如下这块代码可能觉得launchIn好像没有什么作用但是一旦多个流想要并发执行时launchIn就可以起到它该有的作用为流指定了协程作用域之后相当于每个流开启了一个协程每个流都在自己协程中运行所以可以使用launchIn来实现并发的功能。 val mDispatcher Executors.newSingleThreadExecutor().asCoroutineDispatcher()private fun testLaunchIn() {val scope CoroutineScope(mDispatcher)(1..5).asFlow().onEach { println(it) }.onCompletion { mDispatcher.close() }.launchIn(scope)}
http://www.hkea.cn/news/14476008/

相关文章:

  • 陕西省建设网站查询证件相片公司建立网站的步骤
  • 网站建设 东方网景北京做网站的外包公司
  • 建设厅的工程造价网站众展seo推广
  • 免费个人网站+上传免费销售网站模板下载安装
  • 嘉兴建设教育网站培训中心网站国外设计网站pinterest下载
  • 地区网站建设服务周到中国前500强企业排名
  • 网站建设漠环熊掌号河北移动端网站制作
  • 高新网站建设多少钱wordpress高级图片主题
  • 网站制作软件手机版html5做网站链接
  • 描述自己做的网站网站建设硬件投入表
  • 做网站每一步的是什么wordpress分类目录描述
  • 荆州网站建设价格天津seo推广优化
  • 创建网站时可使用的数据库有设计网站页面出现问题
  • 网站建设的整个过程网站建设 收费明细
  • python做简单网站wordpress移动版主题
  • 怎样做网站內链定制做网站报价
  • 建网站如何赚钱如何在虚拟机里面做网站
  • 网站开发人员职责aws ec2安装wordpress
  • 使用本地主机做网站湖州建设公司网站
  • index 石家庄网站建设做软件页面设计的软件
  • 虚拟主机与网站建设网络营销七个步骤
  • nas上建设网站长沙精品网站制作
  • 昆明做百度网站电话重庆建设工程信息网哪里可以查看二级建造师已解锁
  • 网站建设三要素佛山专业画册设计公司
  • 基金网站开发wordpress怎么更改首页海报轮播图
  • 江苏企业建站上海网站改版服务
  • 怎么创建收费网站网络推广软件全邀zjkwlgs
  • 西餐厅网站模板域名注册,网站建设,好做吗
  • 网站的建设需要考虑什么问题做网站和软件的团队
  • 做英文网站 赚美元上海建设工程安全质量监督站网站