Collect vs CollectLatest in kotlin coroutine
https://medium.com/@manuaravindpta/collect-vs-collectlatest-in-kotlin-coroutine-fc8c09fb5ddb
collect와 collectLatest는 모두 flow의 terminal operator이다.
collect
방출되는 모든 값을 처리
- flow가 완료나 취소 될 때까지 현재 코루틴을 block 한다.
- 방출된 모든 값에 대해 람다 함수를 실행한다.
- 여러 collector 중 느린 것이 있으면 렉이 발생할 수 있다.
collectLatest
방출된 값 중 가장 최신 값을 처리
- 실행 중인 코루틴을 반드시 block 할 필요는 없다. (구현에 따라 다름)
- 이전 값이 완료되기 전에 새 값을 방출하면 진행 중인 collect를 취소한다.
- 가장 최근에 받은 값에 대해서만 람다 함수를 실행한다.
- UI 업데이트와 같은 최신 데이터에만 관심이 있는 경우 적합하다.