728x90
반응형
zip으로 묶기
combine으로 묶기
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) }
}
실행결과
1은(는) 일
2은(는) 이
3은(는) 삼
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) }
}
실행결과
1은(는) 일
2은(는) 일
3은(는) 일
3은(는) 이
3은(는) 삼
예제에서는 적합한 코드는 아닙니다.
하지만 데이터가 짝을 이룰 필요없이
최신의 데이터를 이용해 가공해야 하는 경우에 사용할 수 있습니다.
* 용도에 따라 완전히 짝을 맞춰야 하는 경우 zip , 최신의 데이터를 맞춰야한다 combine
728x90
반응형
'Android 공부 > Coroutine' 카테고리의 다른 글
[XX캠퍼스] 14.Kotlin Coroutines & Flow ( 예외처리하기 ) (0) | 2022.07.27 |
---|---|
[XX캠퍼스] 13.Kotlin Coroutines & Flow ( 플래트닝 ) (0) | 2022.07.27 |
[XX캠퍼스] 11.Kotlin Coroutines & Flow ( Flow 버퍼링 ) (0) | 2022.07.26 |
[XX캠퍼스] 10.Kotlin Coroutines & Flow ( Flow 컨텍스트 ) (0) | 2022.07.26 |
[XX캠퍼스] 09.Kotlin Coroutines & Flow ( Flow 연산) (0) | 2022.07.26 |