Learn & Run

RxJava - 리액티브에서의 생성 연산자 본문

Java

RxJava - 리액티브에서의 생성 연산자

iron9462 2021. 1. 20. 20:36

목표

RxJava에서 중요한 요소인 연산자가 무엇인지 알아 보도록 하고 생성 연산자를 사용해보도록 합니다. 

 

 

1. RxJava에서 연산자란 무엇인가?

 

  • RxJava에서의 연산자는 메서드(함수) 입니다.
  • 연산자를 이용하여 데이터를 생성하고 통지하는 Flowable이나 Observable 등의 연산자를 생성할 수 있습니다.
  • Flowable이나 Observable에서 통지한 데이터를 다양한 연산자를 사용하여 가공 처리하여 결과값을 만들어 냅니다.
  • 연산자의 특성에 따라 카테고리로 분류될 수 있습니다.

 

2. Flowable / Observable 생성 연산자

 

  • interval
  • 지정한 시간 간격마다 0부터 시작하는 숫자(Long)을 통지합니다.
  • initialDelay 파라미터를 이용해서 최초 통지에 대한 대기시간을 지정할 수 있습니다.
  • 완료 없이 계속해서 통지하게 됩니다.
  • 호출한 스레드와는 별도의 스레드에서 실행됩니다.
  • Polling 용도의 작업을 수행할 때 활용할 수 있습니다.

* Polling : 서버나 클라이언트에서 특정한 요청을 가져오기 위해 반복적으로 수행하는 것

 

 

 

 

 

  • range
  • 지정한 값(n) 부터 m개의 숫자를 통지합니다.
  • for, while 문 등의 반복문을 대체할 수 있습니다.

 

 

 

 

  • timer
  • 지정한 시간이 지나면 0(Long)을 통지합니다.
  • 0을 통지하고 onComplete() 이벤트가 발생하여 종료됩니다.
  • 호출한 스레드와는 별도의 스레드에서 실행됩니다.
  • 특정 시간을 대기한 후에 어떤 처리를 하고자 할 때 활용할 수 있습니다.

 

 

 

 

  • defer
  • 구독이 발생할 때마다(subscribe()가 호출될 때마다) 새로운 생산자를 생성합니다.
  • 선언한 시점의 데이터를 통지하는 것이 아니라 호출한 시점의 데이터를 통지합니다.
  • 데이터 생성을 미루는 효과가 있기 때문에 최신 데이터를 얻고자할 때 활용할 수 있습니다.
  • 소비자가 구독을 할 때마다 새로운 타임라인이 생깁니다. 

 

defer() 함수의 같은 경우는 구독을 하는 시점의 시간을 출력하는 것을 확인할 수 있습니다.

 

 

 

  • fromIterable
  • Iterable 인터페이스를 구현한 클래스(ArrayList 등)를 파라미터로 받습니다.
  • Iterable에 담긴 데이터를 순서대로 통지합니다.

 

 

 

 

  • fromFuture
  • Future 인터페이스는 Java 5에서 비동기 처리를 위해 추가된 동시성 API입니다.
  • 시간이 오래 걸리는 작업은 Future를 반환하는 ExecutorService에게 맡기고 비동기로 다른 작업을 수행할 수 있습니다.
  • Java 8에서는 CompletableFuture 클래스를 통해 구현이 간결해졌습니다.