val flowA = MutableStateFlow(1)
val flowB = MutableStateFlow(2)
val flowC = flowA.combine(flowB) { a, b -> a + b }
viewModelScope.launch {
flowC.collect {
Log.v("ttaylor","c1=$it")
}
}
viewModelScope.launch {
delay(2000)
flowA.emit(20)
flowB.emit(200)
构建了两个流A,B,并指定初始值分别为1和2。使用 combine 将AB合流为C,用于求和。当订阅 flowC 时,第一个和值在流上生成。当流AB持续变化值之后,流C的值也会随之而变。
打印如下:
com.llw.mvidemo V c1=3
com.llw.mvidemo V c1=22
com.llw.mvidemo V c1=220
如果flowA和flowB的值不变,调用emit,则不会触发flowC.collect
val flowA = MutableStateFlow(1)
val flowB = MutableStateFlow(2)
val flowC = flowA.combine(flowB) { a, b -> a + b }
Log.v("ttaylor","c111")
viewModelScope.launch {
flowC.collect {
Log.v("ttaylor","c1=$it")
}
}
viewModelScope.launch {
delay(2000)
flowA.emit(1)
flowB.emit(2)
打印如下:
com.llw.mvidemo V c1=3