RxSwift
[RxSwift] Filtering Operators (Taking)
thoonk:
2022. 1. 1. 20:51
반응형
Filtering Operators 중 Taking Operators에 관해 정리한 내용을 기록합니다.
Taking Operators
take
take 는 skip 의 반대 개념이며 처음부터 n 번째까지 방출할 수 있다.
Observable.of(1,2,3,4,5)
.take(3)
.subscribe(onNext: {
print($0, terminator: " ")
})
.disposed(by: bag)
// 1 2 3
takeWhile
takeWhile body 내에서 설정한 로직에 따라 false 전까지만 방출한다.
skipWhile과 비슷하다.
Observable.of(1,3,5,7,9)
.enumerated()
.take(while: { $0.index < 4 && $0.element % 2 == 1 })
.subscribe(onNext: {
print($0.element, terminator: " ")
})
.disposed(by: bag)
// 1 3 5 7
takeUntill
다른 Observable이 어떤 요소를 방출할 때까지 기존의 Observable의 요소를 방출한다.
skipUntil과 비슷하다.
let countDown = 10
Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)
.map { countDown - $0 }
.take(until: { $0 == 0 }, behavior: .inclusive)
.subscribe(onNext: {
print($0)
}, onCompleted: {
print("completed")
})
.disposed(by: bag)
/*
10
9
8
7
6
5
4
3
2
1
0
completed
*/
DistinctUntilChanged
연달아 중복된 값이 이어질 때 중복된 값을 제외하여 방출한다.
Observable.of(1,1,2,2,1,1)
.distinctUntilChanged()
.subscribe(onNext: {
print($0, terminator: " ")
})
.disposed(by: bag)
// 1 2 1
부족한 점 피드백해주시면 감사합니다👍
반응형