ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RxJava] 4. Filtering & Combining Operator
    Programming/RxJava 2020. 9. 6. 15:03

    Filtering & Combining Operator

    분류 조합 연산자

    1. Filtering Operator

    2. Combining Operator

    3. Utility


    1. Filtering Operator (분류 연산자)

    debounce

    아이템이 생성되고 일정시간 동안 다른 아이템이 생성되지 않으면 데이터를 전달하는 연산자

     

    distinct

    이전에 전달한 아이템은 전달하지 않게 하는 연산자이다.

    중복 제거

     

     

    distinctUntilChanged

    변경이 생기기 전까지 중복된 데이터를 전달하지 않는 연산자이다.

    동일한 값을 가진 객체를 필터링하고 싶을 때는 클래스 내부에 hashCode equals가 구현되어 있어야 한다.
    변경이 생기기 전까지 중복데이터를 전달하지 않는다.

     

    filter

    특정 조건에 참이 되는 데이터만 전달하는 연산자이다.

     

    ofType

    특정 타입(클래스)만 전달하는 연산자이다.

    ofType 연산자는 내부적으로 filter연산자로 필터링을 거친후 해당 타입으로 형변환 까지 해준다.

     

     

    ignoreElements

    모든 데이터를 무시하는 연산자. Completable을 리턴한다.

     

    throttleFirst

    특정 시간동안 들어온 데이터 중에서 첫 번째 데이터를 전달한다.

     

    throttleLast

    특정 시간동안 들어온 데이터 중에서 마지막 데이터를 전달한다.

     

    skip

    앞부터 n개 만큼 데이터를 건너 뛰고, 그 뒤에 데이터를 전달한다.

    skip(3)이라면, 3개의 데이터는 건너 뛰고 4번째 데이터부터 전달한다.

     

    skipLast

    뒤부터 n개 만큼 데이터를 skip하고 전달한다.

    전달할 데이터의 마지막 인덱스를 알아야한다.

     

    take/takeLast

    skip과 반대로 n개 만큼 데이터를 가져오는 operator이다.

     

     

     

    2. Combining Operator (조합 연산자)

    combineLatest

    각각 Observable에 데이터가 생성 될 때 데이터를 조합해서 전달한다.

    EditText가 3개가 있을 때, 3개의 EditText에 텍스트가 다 채워지면 버튼을 활성화하는 경우 사용할 수 있다.

    merge

    여러 개의 옵저버블을 합쳐서 한 개의 옵저버블로 만든다.

    startWith

    옵저버블에 첫 번 째 데이터만 추가하는 연산자이다.

     

    zip

    옵저버블이 생성한 데이터 순서에 맞게 데이터를 조합

    두 옵저버블의 데이터 수가 다르면, 데이터 수가 적은 옵저버블에 맞춤.

     

     

    3. Utility

    delay

    일정 시간 만큼 데이터를 늦게 전달

     

    do

    옵저버블에서 발생하는 이벤트를 감지할 수 있는 연산자

    debug용으로 사용하거나 stream 중간에 interceptor 용으로 사용

    observeOn / subscribeOn

    데이터를 생산하고 소비자하는 과정까지 중간에 어떤 스케줄러로 동작할 것인지 결정

    subscribeOn은 첫 스케줄러를 지정한다.

    observeOn 을 사용하면 지정한 스케줄러가 변경된다.

    timeout

    일정시간동안 데이터를 전달하지 못하면 TimeoutException을 onError로 전달하는 연산자이다.

    timeout: Long과 TimeUnit을 인자로 받고

    추가로 other:ObservableSource를 전달하면 error를 전달하지 않고 other의 데이터를 전달.

Designed by Tistory.