[RxJava] 기본 개념

블로그 이전하는김에 점점 까먹고 있는 RxJava 다시 한 번 공부해보도록 하려고 합니다.

RxJava를 깊게 공부하기 전 간단한 개념 먼저 살펴보도록 하겠습니다.


리액티브 프로그래밍

  • 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 새로운 데이터를 보냄.(Push 방식)
  • 함수형 프로그래밍의 지원이 필요
    • 멀티 스레드 환경에서 사용할시 데드락과 동기화 문제 발생할 수 있음.
Observable.just("hello")
	  .subscribe(System.out::println);

Observable 클래스

  • 데이터의 변화가 발생하는 데이터 소스

just()함수

  • Observable 선언 방식

Subscribe() 함수

  • Observable을 구독하며 Observable은 subscribe() 함수를 호출해야 변화한 데이터를 구독자에게 발행

emit() 메소드

  • Observable이 subscribe() 함수를 호출한 구독자에게 데이터를 발행하는 것으로 표현

 

마블 다이어그램

  • 실선 : Observable의 시간 표시줄 : 시간순으로 데이터가 발행되는 것을 표현
  • 도형 : 발행하는 데이터 ⇒ 데이터를 발행할 때는 OnNext 발생
  • |(파이프) : Observable에서 데이터 발행이 완료했다는 의미 OnComplete 알림 발생
  • x : 함수가 입력값을 처리할 때 발생한 에러를 의미 OnError 알림이 발생

 

CombineLates 예제 (두개 이상의 Observable)

 

  • 첫 번째 Observable은 같은 모양이지만 번호가 다른 도형을 발행
  • 두 번째 Observable은 모양을 다르지만 번호가 없는 도형을 발행
  • CombineLatest() 함수는 첫 번째 Observable과 두 번째 Observable이 모두 들어오면 합성
  • 조합한 결과가 마지막 줄에 출력. (첫 번째는 색상을 취하고 두번째는 모형을 취함)

 

Reference

Rxjava 프로그래밍 책
https://reactivex.io/documentation/observable.html

'RxJava' 카테고리의 다른 글

[RxJava] Observable - (2)  (0) 2022.10.21
[RxJava] Observable - (1)  (0) 2022.10.21