Groo

flatMapMerge를 활용하여 Flow 변환 병렬 처리 본문

프로그래밍 언어/Kotlin

flatMapMerge를 활용하여 Flow 변환 병렬 처리

김주엽 2022. 4. 17. 18:37

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다.

그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World)


flatMapConcat과 flatMapLatest는 원 Flow로부터 발행된 데이터를 새로운 Flow로 변환할 때 순차적으로 진행한다.

그러나 flatMapMerge는 병렬로 변환한다.

 

val stockFlow = flow {
    emit(66600) // 삼성전자
    emit(95400) // 카카오
    emit(308500) // 네이버
}

@FlowPreview
fun increaseStock() {
    lifecycleScope.launch {
        stockFlow.flatMapMerge { value ->
            flow {
                emit(value * 2)
                delay(10000)
                emit(value * 3)
            }
        }.collect {
            println("증폭된 주식 가격: $it")
        }
    }
}

// 증폭된 주식 가격: 133200
// 증폭된 주식 가격: 190800
// 증폭된 주식 가격: 617000
// 증폭된 주식 가격: 199800
// 증폭된 주식 가격: 286200
// 증폭된 주식 가격: 925500

병렬로 Flow 변환을 수행하는 flatMapMerge에 대해서 알아봤다.

Flow 변환에 있어 순서가 중요하지 않다면 flatMapMerge를 활용하여 연산 속도를 높일 수 있다.

하나를 알면 관련된 다른 것을 배울 때 훨씬 더 이해가 빨라진다 🌚

Comments