-
RxSwift - throttle에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 5. 10. 02:10
Ch6. Filtering Operators in Practice p.139 - p.141
이런 경우를 생각해보자.
검색창에 텍스트를 입력받는다. 텍스트가 입력될 때마다 검색어 자동완성을 보여주기 위해, API요청을 해야한다.
예를 들어, apple을 입력한다고 해보자.
a를 입력할 때, API
p를 입력할 때, API
p를 입력할 때, API
l를 입력할 때, API
e를 입력할 때, API
총 다섯 번 호출된다. 이거.. 괜찮나??
apple을 빠르게 입력한다면 apple이 모두 입력된 뒤에 한 번만 호출되면 좋겠다.
app까지 타이핑되고 잠시 머무른다면, 그 때는 "app"이란 텍스트로 API를 호출해도 무방할 것이다.
이런 경우에 사용할 수 있는 오퍼레이터가 바로 throttle(:_scheduler)이다.
사용 예제를 보자.
texts.asObservable()
.throttle(0.5, scheduler: MainScheduler.instance)
.subscribe(onNext: { [weak self] character in
self?.requestAPI(fullText)
})
.disposed(by: bag)
이 코드가 수행되면, 0.5초 동안 텍스트 인풋이 없어져야 API호출이 일어난다.
즉, A를 입력하고 0.2초 안에 P를 입력하면, "A"에 해당하는 API는 호출되지 않는다.
그림으로 보면 아래와 같다.
와 이거 글로 설명하려니 에디팅 능력에 한계가 느껴진다. ㅠㅠ
'Ray Wenderlich > RxSwift' 카테고리의 다른 글
RxSwift - flatMap에 대해서 알아보자. (0) 2018.06.02 RxSwift - toArray에 대해서 알아보자. (0) 2018.05.22 RxSwift - take, takeWhile, takeUntil에 대해서 알아보자. (1) 2018.04.05 RxSwift - skip, skipWhile, skipUntil에 대해서 알아보자. (1) 2018.04.04 RxSwift - Operator를 시작해보자. (0) 2018.03.28