Coroutine으로 RxJava를 대체할 수 있다는 애기를 종종 듣는데요.

flow야 말로 그러한 부분을 잘 보여주는 Coroutine의 API라고 할 수 있습니다.

RxJava에서 Stream(데이터의 강물)에 대해서 이해하고 있다면,

Coroutine의 Flow는 더욱 이해하기 쉬울 것 입니다.

 

1. Flow

Kotlin에서 비동기로 value를 리턴할 수 있는데요.

여러가지 값을 내보내는 것은 Flow Api를 이용하면 됩니다.

Kotlin의 Coroutine은 cold api로서 Sequence함수와 마찬가지로,

 

아래의 코드에서 fakeApiCall함수는 Flow타입의 값을 300밀리세컨드의 딜레이후에 반환해 줍니다.

suspend라는 키워드를 붙이지는 않았지만, flow블록은 Flow타입 빌더블록으로서,

suspend될 수 있습니다.

 

1-1. emit()함수와 collect()함수

단어 자체에서 알 수 있듯이,

emit 함수는 값을 내보내구요.

collect()함수는 값을 수집합니다.

 

 

2. 주요 Operator들

2-1. filter

리스트의 아이템들을 스트림으로 내려보내서,

특정 아이템만 걸러낼 때 쓰는데요.

람다식을 사용해 간결하게 사용할 수 있습니다.

 

2-2. transform

 

 

 

 

 

728x90

+ Recent posts