ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RxJava] 3. Creating & Transforming Operator
    Programming/RxJava 2020. 9. 6. 01:50

    RxJava 연산자

    1. Creating Operator : Obseverbale을 생성하는 연산자

    • defer 연산자
      • defer 연산자는 옵저버가 구독할 때까지 Observable의 생성을 지연시키다가 subscribe() 메소드를 호출할 때 Observable 아이템을 생성한다.
      • just() 메소드와 defer() 메소드를 통해 각각 Observable을 발행하고 5초 간 Thread를 sleep시킨 뒤 구독 하면
      • just() 연산자로 만든 옵저버블은 객체를 생성하는 시점의 시간을 발행하고,
      • defer() 연산자로 만든 옵저버블은 구독한 시점의 시간을 발행한다.
      • 구독하기 직전에 Observable을 생성하여 가장 최신의 상태 또는 아이템이 포함되도록 하는 것이 목적이라면 defer 연산자를 사용할 수 있다.
      • 즉, 옵저버가 구독할 때까지 옵저버블의 생성을 지연시키는 연산자이다.
    • fromCallable 연산자
      • 데이터를 전달해야 하는 시점에 Observable을 만들어서 전달하는 operator이다.
      • 비동기 처리를 위해 사용한다.

     

    • timer 연산자
      • timer 연산자는 특정 시간 동안 지연시킨 뒤 아이템을 발행한다. 그리고 종료시킨다.
    • interval 연산자
      • interval 연산자는 주어진 시간 간격으로 순서대로 정수를 발행하는 옵저버블을 생성한다.
      • 구독을 중지하기 전까지 무한히 배출하므로 적절한 시점에 페기하는 것이 중요하다.
    • create 연산자
      • emitter를 지정하여 함수 내부에서 onNext(), onError(), onComplete()를 호출해서 데이터를 전달할 수 있다.
      • 어떤 데이터를 전달할지 onNext()를 통해 지정한다.

    2. Transforming Operator : Observable을 변형하는 연산자

    • buffer 연산자
      • buffer 연산자는 Observable이 발행하는 아이템을 묶어서 List로 발행한다.
      • 에러를 발행하는 경우 이미 발행된 아이템들이 버퍼에 포함되더라도 버퍼를 발행하지 않고 에러를 즉시 전달한다.
      • skip 을 지정하면 buffer에 담긴 아이템이 skip되어 발행된다.
        • 예를 들어, 버퍼 count = 2, skip = 3 이라면 
        • [0,1] 2 skip
        • [3,4] 5 skip
        • [6,7] 8 skip
        • ... 과 같이 아이템이 발행될 것이다.
    • map 연산자
      • map 연산자는 발행되는 아이템을 변환하는 가장 기본적인 방법이자 가장 많이 사용하는 연산자다. 발행되는 값에 대해 원하는 수식을 적용하거나 다른 타입으로 변환 시킬 수 있다.
      • 발행되는 아이템에 10을 곱하는 형태로 변환하는 예제이다.

    map 연산자

     

    • flatMap 연산자
      • Observable을 또 다른 Observable로 변환시킨다.
      • 그 다음 변환 시킨 옵저버블의 방출되는 아이템 또한 병합하여 다시 자체적으로 아이템을 방출시킨다.
      • 따라서 1:N형태의 새로운 시퀀스가 발행된다.
      • Observable에서 데이터를 받아 새로운 Observable을 만드는 operator 입니다.
      • 들어온 데이터를 병렬적으로 처리 합니다.
      • 병렬적으로 처리하기 때문에 데이터의 순서가 중요하지 않을 경우 사용한다.
      • flatMap은 다중 for문 처럼 동작하므로 구구단과 같은 프로그램 작성도 가능하다.
    • scan 연산자
      • 이전 데이터와 현재 데이터를 합쳐서 데이터를 전달하는 Observable을 만드는 operator 이다.
      • 첫 데이터는 합치지 않고 그대로 전달한다.

     


    gaemi.github.io/rxjava/2016/12/02/async-task-with-rxjava.html

     

    간단한 비동기 작업 처리를 위한 RxJava

    특정한 작업들에 대한 처리 흐름이 정의된것을 RxJava 에서는 (주로) Observable 이라고 표현한다. 일반적으로 사용되는 Observable 은 Cold Observable 이라고 하며, 하나의 subscriber 가 subscribe 할때마다 하나

    gaemi.github.io

     

     

Designed by Tistory.