Skip to the content.

플로우 런칭

예제 78: 이벤트를 Flow로 처리하기

addEventListener 대신 플로우의 onEach를 사용할 수 있습니다. 이벤트마다 onEach가 대응하는 것입니다.

import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun events(): Flow<Int> = (1..3).asFlow().onEach { delay(100) } fun main() = runBlocking<Unit> { events() .onEach { event -> println("Event: $event") } .collect() println("Done") }

하지만 collect가 플로가 끝날 때 까지 기다리는 것이 문제입니다.

예제 79: launchIn을 사용하여 런칭하기

launchIn을 이용하면 별도의 코루틴에서 플로우를 런칭할 수 있습니다.

import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun events(): Flow<Int> = (1..3).asFlow().onEach { delay(100) } fun main() = runBlocking<Unit> { events() .onEach { event -> println("Event: $event") } .launchIn(this) println("Done") }