值和发射之间的 MutableStateFlow 差异

时间:2021-03-17 08:44:28

标签: kotlin kotlin-coroutines

在 MutableStateFlow 上使用值端发出乐趣有什么区别?

fun main() = runBlocking {

    val mutable = MutableStateFlow(0)

    launch {
        mutable.collect {
            println(it)
        }
    }

    mutable.value = 1
    mutable.emit(2)
}

1 个答案:

答案 0 :(得分:2)

emit() 是一个挂起函数,它封装了一个调用来设置值:

override suspend fun emit(value: T) {
    this.value = value
}

所以区别在于 value 即使不在协程中也可以让您设置值。 emit() 存在,因此 StateFlow 可以从 Flow 继承。

Source code here.