정해진 RxTimeInterval 만큼 기다리는 동안 새로운 데이터가 전달되지 않으면 기다린 데이터를 전달하는 함수 입니다.
기다리는 동안 새로운 데이터가 들어오면 기다렸던 데이터는 전달하지 않고 새로운 데이터를 기다립니다.
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
Observable<Int>.timer(RxTimeInterval.milliseconds(0), period: RxTimeInterval.milliseconds(1000), scheduler: MainScheduler.instance)
.debounce(RxTimeInterval.milliseconds(500), scheduler: MainScheduler.instance)
.subscribe(onNext: {
print("\\($0)")
})
dispatchGroup.notify(queue: DispatchQueue.main) {
exit(EXIT_SUCCESS)
}
dispatchMain()
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
데이터를 전달하고 일정 시간만큼 들어오는 데이터를 무시하는 함수 입니다.
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
Observable<Int>.timer(RxTimeInterval.milliseconds(0), period: RxTimeInterval.milliseconds(1000), scheduler: MainScheduler.instance)
.throttle(RxTimeInterval.milliseconds(2000), scheduler: MainScheduler.instance)
.subscribe(onNext: {
print("\\($0)")
})
dispatchGroup.notify(queue: DispatchQueue.main) {
exit(EXIT_SUCCESS)
}
dispatchMain()
// 0
// 2
// 4
// 6
// 8
// 10
RxSwift에서는 distinctUntilChanged함수가 있는데 데이터가 달라지기 전까지 중복 데이터를 무시하는 함수 입니다.
Observable.of(1, 1, 2, 1, 2, 2, 3)
.distinctUntilChanged()
.subscribe(onNext: {
print("\\($0)")
})
// 1
// 2
// 1
// 2
// 3
해당 index의 데이터를 가져오는 함수 입니다.
elementAt함수는 deprecated이고 내부적으로 element(at:)을 호출 합니다.
Observable.of(1, 1, 2, 1, 2, 2, 3)
.element(at: 3)
.subscribe(onNext: {
print("\\($0)")
})
// 1
특정 조건에 충족하는 데이터만 전달하도록 하는 함수 입니다.
Observable.range(start: 0, count: 10)
.filter {
$0 % 2 == 0
}
.subscribe(onNext: {
print("\\($0)")
})
// 0
// 2
// 4
// 6
// 8