728x90
반응형
Rx의 감을 되찾기 위해 Operator들을 정리하려고 합니다.
먼저 이번엔 특정 조건이 맞으면 이벤트를 발생시키는 메서드들에 대해 알아보도록 하겠습니다.
filter
조건이 맞는(참) 이벤트만 발생한다.
- 짝수만 이벤트를 발생하는 예제
let disposeBag = DisposeBag()
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Observable.from(numbers)
.filter { $0.isMultiple(of: 2) }
.subscribe { print($0) }
.disposed(by: disposeBag)
/*
출력
next(2)
next(4)
next(6)
next(8)
next(10)
completed
*/
skip
정수를 파라미터로 받고, 지정된 파마리터 수 만큼 이벤트를 스킵한다.
- 예제
Observable.from(numbers)
.skip(3)
.subscribe{ print("Skip :", $0) }
.disposed(by: disposeBag)
/*
출력
Skip : next(4)
Skip : next(5)
Skip : completed
*/
skipWhile
~ while 연산자의 특징이 조금 헷갈릴 수 있습니다.
조건이 false가 될때까지 skip하고 그 이후 부터는 조건을 판단하지 않고 이벤트가 발생됩니다.
- 예제
Observable.from(numbers)
.skipWhile{ $0 != 3 }
.subscribe{ print("SkipWhile :", $0) }
.disposed(by: disposeBag)
/*
출력
SkipWhile : next(3)
SkipWhile : next(4)
SkipWhile : next(5)
SkipWhile : completed
*/
skipUntil
옵저버블 타입을 파마리터로 받고, 다른 Observable의 이벤트가 발생하기 전까지 skip한다.
- 예제
let subject = PublishSubject<Int>()
let trigger = PublishSubject<Int>()
subject.onNext(1)
subject.onNext(2)
subject.skipUntil(trigger)
.subscribe{ print("SkipUntil :", $0) }
.disposed(by: disposeBag)
trigger.onNext(1)
subject.onNext(3)
/*
출력
SkipUntil : next(3)
*/
반응형
'RxSwift' 카테고리의 다른 글
[RxSwift] Subject와 Relay - (3) (0) | 2019.07.25 |
---|---|
[RxSwift] Observable이란 - (2) (0) | 2019.07.25 |
[RxSwift] RxSwift의 기본 개념 - (1) (0) | 2019.07.25 |