Kotlin MutableStateFlow

Kotlin MutableStateFlow

import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main(args: Array<String>) {
    val initialState = "null value"
    val stateFlow = MutableStateFlow(initialState)

    runBlocking {
        // 观察者
        val job = launch {
            stateFlow.collect { value ->
                println("收到: $value")
            }
        }

        // 更新状态
        stateFlow.value = "1" //收不到,因为被下面的 2 覆盖。

        // 更新状态
        stateFlow.value = "2"

        delay(10)

        // 更新状态
        stateFlow.value = "3" //收到。
    }
}

收到: 2
收到: 3

kotlin协程flow任务意外结束未emit数据retryWhen onEmpty(5)_kotlin flow emit 丢失数据-CSDN博客文章浏览阅读292次。一、flow ,emit,onCompletion,collect。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。_kotlin flow emit 丢失数据https://blog.csdn.net/zhangphil/article/details/130115220Kotlin协程flow缓冲buffer_kotlin flow buffer-CSDN博客文章浏览阅读160次。debounce蕴含了一定的缓冲思想,即,不立刻触发事件,而是先把要发射的数据进入队列,稍等一定时间(时间)延迟触发,而触发的重要条件取决于前一条数据和后一条数据的时间间隔,注意,前一条和后一条尚未被发射出去,只是待命中。四、map,重组改写数据。可以看到当A进入collect后,由于要delay(100),所以此时Kotlin直接返回onEach,进行下一条数据的处理,如果没有buffer,则需要等待collect里面的这条数据处理完,才调度回到onEach里面处理下一条。四、map,重组改写数据。_kotlin flow bufferhttps://blog.csdn.net/zhangphil/article/details/132527122Kotlin协程flow的debounce与管道Channel_flow debounce-CSDN博客文章浏览阅读316次。kotlin协程管道Channel。debounce蕴含了一定的缓冲思想,即,不立刻触发事件,而是先把要发射的数据进入队列,稍等一定时间(时间)延迟触发,而触发的重要条件取决于前一条数据和后一条数据的时间间隔,注意,前一条和后一条尚未被发射出去,只是待命中。发射完ABC,Kotlin审视待发射的ABCD,按理说ABCD与ABC间隔200,满足发射timeOut值,但是ABCD与ABCDE间隔100,所以跳过ABCD,直接发射ABCDE。A和AB都待发射,A和AB间隔100,所以跳过A,直接发射AB。_flow debouncehttps://blog.csdn.net/zhangphil/article/details/132525124Kotlin协程flow的debounce参数timeoutMillis特性_flow.debounce-CSDN博客文章浏览阅读496次。debounce蕴含了一定的缓冲思想,即,不立刻触发事件,而是先把要发射的数据进入队列,稍等一定时间(时间)延迟触发,而触发的重要条件取决于前一条数据和后一条数据的时间间隔,注意,前一条和后一条尚未被发射出去,只是待命中。发射完ABC,Kotlin审视待发射的ABCD,按理说ABCD与ABC间隔200,满足发射timeOut值,但是ABCD与ABCDE间隔100,所以跳过ABCD,直接发射ABCDE。四、map,重组改写数据。A和AB都待发射,A和AB间隔100,所以跳过A,直接发射AB。_flow.debouncehttps://blog.csdn.net/zhangphil/article/details/132525869Kotlin协程flow,firstOrNull只要最先first,lastOrNull只要最后-CSDN博客文章浏览阅读394次。firstOrNull() //虽然发射很多数据,但只要第1次发射过来的数据。.lastOrNull() //虽然发射很多数据,但只要最后1次发射过来的数据。emit(i)delay(10)kotlin协程flow任务意外结束未emit数据retryWhen onEmpty(5)_zhangphil的博客-CSDN博客一、flow ,emit,onCompletion,collect。_firstornullhttps://blog.csdn.net/zhangphil/article/details/132492588

Kotlin flow withTimeout repeat_kotlin flow timeout-CSDN博客文章浏览阅读230次。一、flow ,emit,onCompletion,collect。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。_kotlin flow timeouthttps://blog.csdn.net/zhangphil/article/details/132099928

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值