본문 바로가기
Develop

RxJava 프로그래밍 1

by _dreamgirl 2020. 2. 22.
반응형

RxJava  프로그래밍

 

제 1장, 리액티브 프로그래밍 소개

 

  • 기존의 PULL방식의 프로그래밍 개념을 PUSH 방식의 프로그래밍 개념으로 바꾼다.
  • 함수형 프로그래밍의 지원을 받는다.
  • 동시성을 적극적으로 끌어안을 필요가 있다. 
  • 마블다이어그램

 

제 2장, Observable 처음 만들기

  • Observable, Maybe, Flowable
  • Observable 클래스는 옵저버 패턴을 구현한다. 다양한 팩토리 함수를 가지고 있다.
  • RxJava 1.x 기본 팩토리 함수 : create, just, from
  • RxJava 2.x 기본 팩토리 함수 : fromArray, fromInterable, fromCallable, fromFuture, fromPublisher

 

  • Single Class : 발행과 동시에 종료됨
  • Maybe Class : 발행 없이 바로 발생을 완료할 수도 있다. (0 또는 1)
  • 뜨거운 Observable vs. 차가운 Observable : 기본적인 것은 차가운 Observable, 뜨거운 Observable은 구독자 상관없이 발행을 하며 발행 속도와 구독자의 처리 속도 차이가 커질 때 배압을 고려해야 한다.
  • 차가운 Observable : 웹 요청, 데이터베이스 쿼리와 파일 읽기 등
  • 뜨거운 Observable : 마우스 이벤트, 키보드 이벤트, 시스템 이벤트, 센서 데이터와 주식 가격 등

 

  • Subject Class : Observable의 속성과 구독자의 속성이 모두 있다
  • AsyncSubject : Observable에서 발행한 마지막 데이터를 얻어 올 수 있는 Subject Class
  • BehaviorSubject : 구독자가 구독을 하면 가장 최근 값 혹은 기본 값을 넘겨주는 클래스
  • PublishSubject :  구독자가 subscribe 함수를 호출하면 값을 발행, 해당 시간에 발행한 데이터를 그대로 구독자게에 전달  
  • ReplaySubject : 구독자가 새로 생기며 항상 데이터의 처음부터 끝까지 발행하는 것을 보장, 메모리 누구 발생 가능성
  • ConnectableObservable : connect 함수를 호출한 이후에 구독한 구독자에게 구독 이후에 발생한 데이터부터 발행한다.
  • 메서드 체이닝(method chaining) : 팩토리 함수와 연산자를 함께 사용하는 기법 

 

제 3장, 리액티브 연산자 입문

  • Map, flatMap, filter, reduce  기본 함수
  • Map : 입력 데이터와 그것을 변환해주는 함수
  • flatMap : 입력 후 발행이 Observable로 나오는 함수
  • Filter : Observable에서 원하는 데이터만 걸러내는 역할을 하는 함수
  • Reduce: 어떤 최종 결과 데이터를 합성할 때 활용하는 함수
  • Pair 혹은 Tuple 같은 일반화된 자료구조를 선호

 

제 4장, 리액티브 연산자의 활용

 

  • 생성 연산자 :  interval(), timer(), range(), intervalRange(), defer(), repeat()
  • 서버와 통신을 하면 해당 서버가 살아있는지 확인( 확인 과정을 보통 ping 혹은 heartbeat이라고 )
  • 변환 연산자 : concatMap(), flatMap(), switchMap(), groupBy(), scan()
  • 결합 연산자 : zip(), combineLatest(), merge(), concat()
  • 조건 연산자 : amb(), takeUntil(), skipUntil(), all()
  • amb : 먼저 나오는 observable을 택한다
  • takeUntil :  다른 observable 값이 발행이 되면 기존 observable이 발행이 되지 않는다.
  • skipUntil : 다른 observable 값이 발행이 되면 기존 observable이 발행하기 시작한다.
  • all : 주어진 조건이 맞을 때 true, 아니면  false를 반환한다. 
  • 수학 기타 연산자 : delay(), timeInterval()

 

참고 도서

- 리액티브 프로그래밍 기초부터 RxAndroid까지 한번에  RxJava프로그래밍

- 함수형 사고(한빛미디어, 2016) 

반응형

댓글