RxSwift

[RxSwift] Filtering Operators (Ignoring)

thoonk: 2021. 5. 11. 13:43
반응형

Filtering Operators 중 Ignoring Operators에 관해 정리한 내용을 기록하겠습니다.

Ignoring Operators

1. IgnoreElements

  • 어떠한 이벤트도 방출하지 않는다. -> .next를 무시한다.
  • .completed 또는 .error 와 같은 이벤트는 허용한다.

 

 

let data = PublishSubject<Int>()
let bag = DisposeBag()

data
    .ignoreElements()
    .subscribe({ _ in
        print("Event is Emitted.")
    })
    .disposed(by: bag)

// onNext 이벤트들 무시됨
data.onNext(1)
data.onNext(2)
data.onNext(3)

// Completed 호출되고 Event is Emitted. 출력됨
data.onCompleted()

 

2. ElementAt

  • n번째 요소만 이벤트를 방출하고 나머지는 무시한다.

 

let data = PublishSubject<Int>()
let bag = DisposeBag()

data
    .element(at: 2)
    .subscribe(onNext: { data in
        print("Number \(data) is emitted")
    })
    .disposed(by: bag)

data.onNext(0)
data.onNext(1)
data.onNext(2)

// Number 2 is emitted
// 0, 1은 무시하고 2의 이벤트만 방출됨

 

3. Filter

  • 지정한 조건식에 따라 필터링하여 방출한다.

 

let bag = DisposeBag()

Observable.of(2,30,22,5,60,1)
    .filter({ x -> Bool in
        x > 10
    })
    .subscribe(onNext: { x in
        print(x)
    })
    .disposed(by: bag)

// 30 22 60
// 10보다 큰 요소의 이벤트들만 방출된다.

 

부족한 점 피드백해주시면 감사하겠습니다👍

 

참고: 

reactivex.io/

github.com/fimuxd/RxSwift/blob/master/Lectures/05_Filtering%20Operators/Ch5.%20FilteringOperators.md

반응형