Skip to the content.

플로우 결합하기

예제 66: zip으로 묶기

zip은 양쪽의 데이터를 한꺼번에 묶어 새로운 데이터를 만들어 냅니다.

import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun main() = runBlocking<Unit> { val nums = (1..3).asFlow() val strs = flowOf("일", "이", "삼") nums.zip(strs) { a, b -> "${a}은(는) $b" } .collect { println(it) } }

예제 67: combine으로 묶기

combine은 양쪽의 데이터를 같은 시점에 묶지 않고 한 쪽이 갱신되면 새로 묶어 데이터를 만듭니다.

import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun main() = runBlocking<Unit> { val nums = (1..3).asFlow().onEach { delay(100L) } val strs = flowOf("일", "이", "삼").onEach { delay(200L) } nums.combine(strs) { a, b -> "${a}은(는) $b" } .collect { println(it) } }

예제에서는 적합한 코드는 아닙니다. 하지만 데이터가 짝을 이룰 필요없이 최신의 데이터를 이용해 가공해야 하는 경우에 사용할 수 있습니다.