반응형

Reactive Programing 7

flatMap vs concatMap vs switchMap

1. 마블다이어그램 2. flatMap - Observable을 반환 합니다. - map() 함수는 단일 데이터를 발행하지만, flatMap() 함수는 여러개의 데이터를 발행 합니다. - 데이터 발행의 순서를 보장하지 않습니다. FlatMap 파헤치기 1. flatMap flatMap() 함수는 map()함수를 좀 더 발전시킨 함수 입니다. map() 함수는 원하는 입력값을 어떤 함수에 넣어서 변환할 수 있는 일대일 함수 입니다. 하지만, flatMap() 함수는 똑같이 함수에 넣 coding-food-court.tistory.com 3. concatMap concatMap() 함수는 flatMap() 함수와 매우 비슷합니다. flatMap()은 먼저 들어온 데이터를 처리하는 도중에 새로운 데이터가 들어..

Reactive Programing 2021.02.03

FlatMap 파헤치기

1. flatMap flatMap() 함수는 map()함수를 좀 더 발전시킨 함수 입니다. map() 함수는 원하는 입력값을 어떤 함수에 넣어서 변환할 수 있는 일대일 함수 입니다. 하지만, flatMap() 함수는 똑같이 함수에 넣더라도 결과가 Observable로 나온다는 것이 다릅니다. 즉 map() 함수가 일대일 함수라면 flatMap() 함수는 일대다(Observable) 함수입니다. 마블다이어그램을 보시면, [빨간색](원) 1개를 입력하면, [빨간색](다이아몬드) 2개가 출력 됩니다. 결과값이 Observable 이므로 여러 개의 데이터를 발행할 수 있습니다. 마블다이어그램을 보시면, 무조건 2개의 데이터를 발행 하는 것 처럼 보이지만 입력 데이터의 속성에 따라서 1개를 발행할 수도 있고, 여..

Reactive Programing 2021.02.02

Cold Observable vs Hot Observable (PublishSubject 클래스)

Observable에는 [뜨거운 Observable(Hot Observable)]과 [차가운 Observable(Cold Observable)]이 있습니다. 1. Cold Observable [차가운 Observable]인 Observable은 Observabled.just() Observable.fromIterable() 함수를 호출해도 옵저버가 subscribe() 함수를 호출하여 구독하지 않으면 데이터를 발행하지 않습니다. [차가운 Observable]은 다음과 같습니다. - Observable - Single - Maybe [차가운 Observable]의 예는 웹 요청, 데이터베이스 쿼리와 파일 읽기 등 입니다. 보통 내가 원하는 URL이나 데이터를 지정하면 그때부터 서버나 데이터베이스 서버에 요..

Reactive Programing 2020.11.22

리액티브 프로그래밍 (Reactive Programming) RxJava

1. 리액티브 프로그래밍 리액티브 프로그래밍은 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식에 의해서 업데이트되는 방식 입니다. 리액티브 연산자를 활용하여 함수형 프로그래밍 방식으로 스레드에 안전한 비동기 프로그래밍 방식 입니다. 2. 명령형 프로그래밍 vs 리액티브 프로그래밍 명령형 프로그래밍 : 어떤 기능을 직접 실행 하여, 데이터를 새로 계산하는 당겨오는 방식 입니다. (pull 방식) 리액티브 프로그래밍 : 어떤 기능을 직접 실행 하는 것이 아니라, 시스템에 어떤 이벤트가 발생했을 때 처리하는 방식 입니다. (push 방식) 3. 엑셀 프로그램 리액티브 프로그래밍의 예시로 엑셀(Excel)이 있습니다. 각 셀에 매출을 입력하여, 1월 ~ 5월 까지의 합계를 계산 합니다...

Reactive Programing 2020.11.01

Java API를 RxJava와 통합 하는 방법

1. Observable.fromCallable() Java의 Callable을 통합하기 위해서 Observable.fromCallable을 사용할수 있습니다. Observable.fromCallable(() -> someOperation()) .subscribeOn(Schedulers.io()) 2. Observable.fromFuture() Java의 Future을 통합하기 위해서 Observable.fromFuture을 사용할수 있습니다. Observable.fromFuture(new FutureTask(() -> longRunningOperation())) 3. Emitter(이미터) 인터페이스 사용 Emitter(이미터) 인터페이스를 사용하여 아이템 방출을 수동적으로 제어 할수 있습니다. .on..

Reactive Programing 2020.10.31

Flowable 배압(BackPressure) 대응

Flowable은 Observable과 사용 방식은 같습니다. 또한, Flowable과 Observable을 사이의 호환도 toObservable(), toFlowable() 함수를 지원합니다. Flowable은 RxJava 2.x 부터 새롭게 도입된 클래스 입니다.그러면 Observable과 Flowable의 차이점은 무엇 일까요? 1. subscribeOn() subscribeOn() 함수는 Observable에서 구독자가 subscribe() 함수를 호출했을 때 데이터 흐름을 발행하는 스레드를 지정 합니다. static void sleep(long millseconds) { try{ Thread.sleep(millseconds); }catch (InterruptedException ex){ ex.p..

Reactive Programing 2020.10.30

RxJava의 Single, Maybe 클래스

RxJava 에서 Observable 클래스 만큼 자주 쓰이지 않지만, 종종 보이는 Single, Maybe 클래스에 대해서 알아 보겠습니다. 1. Single 클래스 Observable은 데이터를 무한하게 발행 할수 있지만, Single 클래스는 오직 1개의 데이터만 발행하도록 한정 합니다. 보통 결과가 유일한 서버 API를 호출할 때 유용하게 사용 할수 있습니다. 따라서, 데이터 하나가 발행과 동시에 종료 됩니다. onNext(), onComplete() 함수가 onSuccess() 함수로 통합된 것 입니다. 따라서, Single 클래스의 라이프 사이클 함수는 onSuccess(T value) 함수와 onError() 함수로 구성 됩니다. // 1. first() 함수를 호출해 Single 객체 생성..

Reactive Programing 2020.10.15
반응형