본문 바로가기

Flow

(2)
Flow 생성 : flowOf(), flow { emit() } Flow를 생성하고 값을 방출하기 위해서는 flowOf() 를 사용할 수도 있고, flow { emit() } 을 사용할 수도 있다. flowOf()는 값을 넘겨받아 emit() 하여 Flow를 생성하는 함수다. 난 이 두개가 어떤 차이를 가지고 있는지 알지 못하고 flowOf는 더 간편하게 flow를 만들 수 있는거~ 라는 대략의 생각으로 사용했다. 근데요..? zip 함수에 대해 찾아보다가 StackOverFlow에서 한 댓글을 발견하게 됩니다 각 차이를 한번 보자면 2023.04.17 추가 수정 flowOf 도 결국에는 내부에서 flow { emit() } 방식으로 flow를 만들고 있다. 하지만 둘을 비교해봤을 때, flowOf 를 사용하면 병렬 실행이 되지 않는 이유는 인자를 받는 부분에서 차이..
Flow 결합 연산자 : zip, combine Coroutine Flow는 Flow를 결합할 수 있는 연산자 zip과 combine을 제공하고 있다. 두 연산자 동작에 어떤 차이가 있는지 알아보자 zip 결합된 모든 flow의 결과값이 올 때까지 기다렸다 방출한다. flow 결과값들이 1:1로 결합하는 방식 모든 flow의 방출이 완료될 때까지 작동한다. 그림으로 보면 이해가 쉽다 flow1 - Blue Circle이 방출되고 1초 후 Red Circle이 방출된다. flow2 - Blue Square가 방출되고 2초 후 Red Square가 방출된다. flow1.zip(flow2) 의 결과값은? 1. Blue Circle과 Blue Square가 결합된다. 2. 1초 후 방출된 Red Circle은 대응되는 값이 없기 때문에 기다린다. 3.다시 1..