목록전체보기 (70)
Groo
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Q0ecj/btrzyXpiZMO/ZcDuW8ROvVJIDssTrmrqkk/img.jpg)
아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) flatMapLatest는 원 Flow의 최신 데이터만을 이용하여 새로운 Flow로 변환할 수 있도록 도와준다. 새로운 Flow로 변환하는 과정에서 원 Flow로부터 최신 데이터가 발행될 경우, 기존 Flow 변환을 취소하고 최신 데이터를 사용하여 새로운 Flow 변환을 시작한다. flatMapLatest는 flatMapConcat의 한계를 극복하며 collectLatest와 동작 방식이 유사하다. val stockFlow = flow { emit(66600) // 삼성전자 emit(95400) // 카카오 emit(308500) // 네이버 } @FlowPreview..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgwVn5/btrzzZy5dnP/3wJBPsmG6KKIysX8IDTgAk/img.jpg)
아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) Flow는 여러 Flow를 합쳐 하나의 Flow로 변환할 수 있도록 돕는 Flattening Operator를 제공한다. flatMapConcat은 Flattening Operator의 대표적인 연산자 중 하나이며 여러 Flow를 연결한다. @FlowPreview public fun Flow.flatMapConcat(transform: suspend (value: T) -> Flow): Flow = map(transform).flattenConcat() flatMapConcat은 내부에서 아래 두 가지 과정을 통해 여러 Flow를 하나로 합친다. transform 변수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/umPzT/btrymjk3ooZ/YEKp5Sg45kt8UnKKxVdoJ0/img.jpg)
아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) 데이터의 발행이 소비의 속도보다 빠를 때 collectLatest를 활용하면 중간 데이터는 하나도 얻지 못하고 마지막 데이터만 얻는다. conflate를 활용하면 새로운 데이터가 발행되더라도 이미 시작한 데이터 소비는 끝날 때까지 진행하고 해당 소비가 끝난 시점에서 가장 최신에 발행된 데이터를 기준으로 소비를 이어서 다시 진행한다. val feedbackFlow = flow { for (i in 1..50) { emit(i) delay(1000) // 피드백 생성 소요시간 } } fun reflectFeedback() { lifecycleScope.launch { fe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GwEcc/btrymj6lZtq/Hr2kIra0JwJX78ibk8gpWK/img.jpg)
아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) Flow는 emit을 통해 데이터를 발행하고 collect의 action 파라미터에 의해 소비된다. collect의 action 블록에서는 발행된 데이터를 순차적으로 받아 suspend fun을 수행한다. public suspend inline fun Flow.collect(crossinline action: suspend (value: T) -> Unit): Unit = collect(object : FlowCollector { override suspend fun emit(value: T) = action(value) }) collect는 새로운 데이터가 발행되더라..