옵져버블이 방출하는 next 이벤트를 필터링, completed 와 error 이벤트만 구독자로 전달
Observable.from([1,2,3]) .ignoreElements() .subscribe {print($0)} .disposed(by: disposeBag)
특정 인덱스에 위치한 요소를 제한적으로 방출, 구독자에게 하나의 요소만 전달되고 나머지는 무시
Observable.from([1,2,3]) .elementAt(1) .subscribe {print($0)} .disposed(by: disposeBag)
--- 2 요소만 방출
## filter
> 옵져버블이 방출하는 요소 필터링
```swift
Observable.from(Array(1...10)
.filter { $0.isMultiple(of: 2) }
.subscribe {print($0)}
.disposed(by: disposeBag)
--- 구독자로 짝수 요소만 방출
특정 요소를 무시
<!-- 1. Skip -->
Observable.from([1,2,3])
.skip(3)
.subscribe {print($0)}
.disposed(by: disposeBag)
<! -- 2. SkipWhile -->
Observable.from([1,2,3])
.skipWhile { !$0.isMultiple(of: 2) }
.subscribe {print($0)}
.disposed(by: disposeBag)
-- 2, 3 전달
<! -- 3. skipUntil -->
let subject = PublishSubject<Int>()
let trigger = PublishSubject<Int>()
subject.skipUntil { trigger }
.subscribe {print($0)}
.disposed(by: disposeBag)
// subject 에서 요소 방출
subject.onNext(1)
trigger.onNext(0)
subject.onNext(2)
-- next(2)
요소 방출 조건 설정
take
Observable.from([1,2,3]) .take(2) .subscribe {print($0)} .disposed(by: disposeBag) -- 1, 2 방출
Observable.from([1,2,3])
.takeWhile{ !$0.isMultiple(of: 2) }
.subscribe {print($0)}
.disposed(by: disposeBag)
-- 1
let subject = PublishSubject<Int>()
let trigger = PublishSubject<Int>()
subject.takeUntil { trigger }
.subscribe {print($0)}
.disposed(by: disposeBag)
// subject 에서 요소 방출
subject.onNext(1)
trigger.onNext(0)
subject.onNext(2)
-- next(1)
let subject = PublishSubject<Int>()
subject.takeLast(2)
.subscribe {print($0)}
.disposed(by: disposeBag)
[1,2,3].forEach { subject.onNext($0) } // 버퍼 2,3
subject.onNext(11) // 버퍼 3, 11
subject.onCompleted() // 요소 방출
subject.onError(MyError.error) // 버퍼 요소 방출 없이 에러이벤트만 방출
원본 옵져버블에서 첫번째 요소만 방출 / 조건과 일치하는 첫번째 요소 방출
Observable.just(1) .single() .subscribe {print($0)} .disposed(by: disposeBag)
-- 1 전달 , completed
Observable.from([1,2,3])
.single()
.subscribe {print($0)}
.disposed(by: disposeBag)
-- 1 전달 , error
- 원본 옵졉버블에서 completed 전달될때까지 기다림
## distinctUntilChanged
> 동일한 항목이 연속적으로 방출되지 않도록 필터링
2개의 요소를 비교하여 이전과 동일하면 방출 X
```swift
Observable.from(Array(1...10))
.distinctUntilChanged()
.subscribe {print($0)}
.disposed(by: disposeBag)
짧은 시간동안 반복적으로 방출되는 이벤트 제어