제이슨의 개발이야기

RxJava Observable 클래스 와 just 함수 본문

Rx

RxJava Observable 클래스 와 just 함수

제이쓰은 2021. 2. 24. 12:40
728x90
반응형

오늘은 Observable 클래스가 무엇인지 알아보고자 합니다

Rx Java 프로그래밍은 Observable에서 시작해서 Observable 로 끝난다고 해도 과언이 아닐정도로 중요한 개념입니다 

그래서 Rx Java 를 공부하기 위해서 Observable에 대해 충분히 숙지 해야 할 필요가 있습니다

 

Observable 은 옵서버 패턴으로 구현한 클래스로 구현합니다 옵서버 패턴은 객체의 상태 변화를 관찰하는 관찰자(옵서버) 목록을 객체에 등록하고 상태 변화가 있을 때 마다 메서드를 호출하여 객체가 직접 목록의 각 옵서버에게 변화를 알려줍니다 

 

Rx Java 의 Observable은 세 가지의 알림을 구독자에게 전달합니다 꼭 알아두시기 바랍니다!


         onNext : Observable이 데이터의 발행을 알립니다 . 기존의 옵서버 패턴과 같다

         onComplete : 모든 데이터의 발행을 완료했음을 알립니다 onComplete 이밴트는 단 한 번만 발생하며 , 발생한 후에는 더 이상

                                 onNext 이벤트가 발행해선 안됩니다

        onError : Observable에서 어떤 이유로 에러가 발생했음을 알립니다.  onError 이벤트가 발생하면 이후에 onNext 및 onComplete

                      이벤트가 발생하지 않습니다.  즉 Observable의 실행을 종료합니다 


just 함수

 

just() 함수는 인자로 넣은 데이터를 차례로 발행하려고 Observable을 생성합니다 (실제 데이터의 발행은 subscribe() 함수를 호출해야함)

한개의 값을 넣을 수 있고 여러개의 값을 넗을 수도 있습니다! 단 최대 10개까지 넣을 수 있습니다


ex) Observable.just(1,2,3,4,5,6).subscribe(System.out::println);

실행 결과)

1

2

3

4

5

6

인자가 N개인 just()함수의 마블 다이어그램

 


  subscribe() 함수와 Disposable 객체

RxJava 는 내가 동작시키기 원하는 것을 사전에 정의해둔 다음 실제 그것이 실행되는 시점을 조절할 수 있습니다 이때 사용하는 것이 

subscribe() 함수입니다 위에 예시처럼 Observable은 just() 등의 팩토리 함수로 데이터 흐름을 정의 한 후 subscribe() 함수를 호출해야 실제로 데이터 를 발행합니다 

subscribe()함수를 호출하면 Disposable 인터페이스의 객체를 리턴하는대 Disposable은 RxJava 1.x의 Subscription(구독) 객체에 해당합니다 그리고 dispose() 함수와 isDisposed() 함수가 있습니다

간략하게 설명하면

dispose()-> 구독을 해지하는 함수

isDisposed()-> 구독을 해지했는지 확인하는 함수 입니다.

여기서 구독이라는 말이 생소하신분들에게는 이해하기 어려울 수 있을거 같습니다 정말 쉽게 말하면

 

옵서버 패턴은 데이터가 변경,추가 등 변화가 발생할 경우 구독자에게 데이터가 변화를 알려주는 방식입니다 

 

ex) Observable.just(1,2,3,4,5,6).subscribe(System.out::println); 여기에서 데이터 1~6을 subscribe를 통해 구독자에게 데이터를 발행했다 라고 이해하시면 쉽고 .subscribe(System.out::println); 을 호출하면 Disposable 인터페이스의 객체를 리턴 하는 의미입니다! 

그리고 리턴 된 객체는 앞서 dispose() 함수와 isDisposed() 을 가지고 있는 객체입니다

 

저도 요즘 RxJava 공부를 하고 있어서 설명이 별로 좋지 못해 죄송합니다 ㅠㅠ 

우리 다같이 공부해서 RxJava 마스터 해봅시다!!

728x90
반응형