Stream同士を合成できる(combineLatest)
runBlocking {
val uiEventCall = flow {
emit("UIイベント1")
delay(500)
emit("UIイベント2")
delay(500)
emit("UIイベント3")
delay(500)
emit("UIイベント4")
}
val apiCall = flow {
emit("WebAPIの呼び出し結果1")
delay(1000)
emit("WebAPIの呼び出し結果2")
}
apiCall.combine(uiEventCall) { uiResult, apiResult ->
"$uiResult, $apiResult"
}.collect { result ->
println(result)
}
}
WebAPIの呼び出し結果1, UIイベント1
WebAPIの呼び出し結果1, UIイベント2
WebAPIの呼び出し結果2, UIイベント2
WebAPIの呼び出し結果2, UIイベント3
WebAPIの呼び出し結果2, UIイベント4
例えば常に更新されるタイプのデータ
をUIイベントの度に更新しながら使う、
とか