异步流学习

异步流


一、流构建器

    1. 创建一个流构建器示例
fun simple(): Flow<Int> = flow { // 流构建器
    for (i in 1..3) {
        delay(100) // 假装我们在这里做了一些有用的事情
        emit(i) // 发送下一个值
    }
}
 
// 收集这个流
simple().collect { value -> println(value) }
  • 2.流使用 emit 函数发射值。
  • 3.流使用 collect 函数收集值。
  • 4.flow 构建器中的代码直到流被收集的时候才运行。

二、其他类型的流构建器

  • 1.flowOf 构建器定义了一个发射固定值集的流。
  • 2.使用 .asFlow() 扩展函数,可以将各种集合与序列转换为流。

三、流取消基础

  • 1.流的收集可以在当流在一个可取消的挂起函数(例如 delay)中挂起的时候取消。

四、过渡流操作符

    1. 就像使用集合与序列一样。 过渡操作符应用于上游流,并返回下游流。 这些操作符也是冷操作符,就像流一样。
      这类操作符本身不是挂起函数。它运行的速度很快,返回新的转换流的定义。
    1. map操作符
suspend fun performRequest(request: Int): String {
    delay(1000) // 模仿长时间运行的异步工作
    return "response $request"
}
 
fun main() = runBlocking<Unit> {
    (1..3).asFlow() // 一个请求流
        .map { request -> performRequest(request) }
        .collect { response -> println(response) }
}

五、转换操作符

    1. 在流转换操作符中,最通用的一种称为transform。它可以用来模仿简单的转换,例如 map 与 filter,以及
      实施更复杂的转换。 使用transform操作符,我们可以 发射 任意值任意次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值