Groo
flatMapLatest를 활용하여 flatMapConcat의 한계 극복 본문
반응형
아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다.
그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World)
flatMapLatest는 원 Flow의 최신 데이터만을 이용하여 새로운 Flow로 변환할 수 있도록 도와준다.
새로운 Flow로 변환하는 과정에서 원 Flow로부터 최신 데이터가 발행될 경우, 기존 Flow 변환을 취소하고 최신 데이터를 사용하여 새로운 Flow 변환을 시작한다.
flatMapLatest는 flatMapConcat의 한계를 극복하며 collectLatest와 동작 방식이 유사하다.
val stockFlow = flow {
emit(66600) // 삼성전자
emit(95400) // 카카오
emit(308500) // 네이버
}
@FlowPreview
fun increaseStock() {
lifecycleScope.launch {
stockFlow.flatMapLatest { value ->
flow {
emit(value * 2)
delay(10000) // 삼성전자, 카카오는 취소됨
emit(value * 3)
}
}.collect {
println("증폭된 주식 가격: $it")
}
}
}
// 증폭된 주식 가격: 133200
// 증폭된 주식 가격: 190800
// 증폭된 주식 가격: 617000
// 증폭된 주식 가격: 925500
flatMapLatest에 대해서 알아봤다.
collectLatest와 동작 방식이 유사해 어렵지 않았다.
오늘 저녁은 또 뭐 먹지 🌝
반응형
'프로그래밍 언어 > Kotlin' 카테고리의 다른 글
lifecycleScope와 viewModelScope의 한계 (0) | 2022.04.18 |
---|---|
flatMapMerge를 활용하여 Flow 변환 병렬 처리 (0) | 2022.04.17 |
flatMapConcat을 활용하여 Flow를 다른 Flow로 변환 (0) | 2022.04.16 |
conflate를 활용하여 최신 데이터 collect (0) | 2022.04.03 |
collect와 collectLatest의 차이 (0) | 2022.04.03 |
Comments