coroutine Flow를 사용할 때 launchIn과 collect의 차이점이 뭐냐고
질문 받았을 때 말문이 막혔습니다.
딱히 뭔 차이인지 모르고 썻던것입니다.
이번 포스팅에서 차이를 알아보도록 하겠습니다.
coroutineScope.launch {
flowOf(1, 2, 3)
.collect { println(it) }
}
collect는 정지함수나 coroutineScope 안에서만 호출이 가능합니다.
flowOf(1, 2, 3)
.onEach { println(it) }
.launchIn(coroutineScope)
launchIn은 일반함수에서도 호출이 가능합니다.
val job = flowOf(1, 2, 3)
.onEach { println(it) }
.launchIn(coroutineScope)
job.cancel()
또한 job을 통해 작업을 컨트롤 할 수도 있습니다.
collect와 launchIn사실 동작에서의 큰차이는 없지만
호출을 어디에서 하는지에 따라 유동적으로 정해주시면 되겠습니다.
https://morioh.com/a/f8bdf13f844e/differences-in-methods-of-collecting-kotlin-flows