티스토리 뷰
[RxSwift-Operator] debounce와 Throttle(latest: true)/Throttle(latest: false)
eungding 2019. 8. 10. 17:46[1] debounce
- 타이머를 지정해두고 타이머가 끝난 시점에 가장 최근의 값을 방출해준다.
- 이벤트가 방출될때마다 타이머가 초기화된다.
- 사용예제: 타이머를 2초로 지정해두면, 사용자가 버튼을 폭풍 누르다가 더이상 버튼을 안누르고 2초가 지날때 가장 마지막 클릭 이벤트를 준다.
[2] throttle
- 타이머를 지정해두고 이벤트가 처음 방출되면 타이머 동안 어떤 이벤트도 방출되지 않는다.
- 이벤트가 방출될때마다 타이머가 초기화되지 않는다.
- 사용예제: 타이머를 2초로 지정해두면, 사용자가 버튼을 폭풍 누를때 처음 클릭 이벤트만 주고 2초동안 어떠한 클릭이벤트도 주지 않는다. (다만 latest를 어떻게 설정해주냐에 따라 조금 다른데 밑에서 확인!_!)
[2.1] throttle latest = true 일때
[2.2] throttle latest = false 일때
latest가 true이면 trottle에서 지정해준 타이머가 끝나는 시점에 발행된 마지막 값을 가져오고 false면 안가져온다
코드를 그림으로 표현해보면 다음과 같다
[3] 읽어보면 좋은 글
https://ehdrjsdlzzzz.github.io/2019/05/24/RxSwift-7/
Rx사이트에 있는 그림보다 여기 블로그 그림이 더 이해가 쉽다...! 설명도 좋다 감사합니다 👏
다만 throttle은 latest=true일때랑 false일때랑 그림이 없어서(true일때 그림만 있음...ㅠㅠ)
https://medium.com/fantageek/throttle-vs-debounce-in-rxswift-86f8b303d5d4
두 개의 연산자는 어떤 상황에서 유용하게 쓰이는지 알려주는 좋은 글
(사용자가 버튼을 막 눌러서 API Call이 엄청 많이 되는 것을 방지하기 등)
'🍏 > RxSwift' 카테고리의 다른 글
[RxSwift] rx.text를 쓸 때 주의할 점 (⚠️ text가 변할 때만 이벤트 방출되는 것이 아니다⚠️) (0) | 2019.09.20 |
---|---|
[RxSwift] Signal과 Driver (1) | 2019.07.19 |
[RxSwift-Operator] share & share의 파라미터 replay와 scope..!! (0) | 2019.07.18 |
[RxSwift-ControlProperty] ControlProperty의 orEmpty (0) | 2019.05.27 |
[RxSwift-Operator] withLatestFrom과 combineLatest (0) | 2019.04.29 |
- Total
- Today
- Yesterday
- Flutter Spacer
- Flutter getter setter
- Dart Factory
- ribs
- METAL
- Django Heroku Scheduler
- SerializerMethodField
- flutter 앱 출시
- DRF APIException
- Flutter 로딩
- flutter build mode
- ipad multitasking
- Python Type Hint
- Django Firebase Cloud Messaging
- Flutter Clipboard
- 장고 URL querystring
- Sketch 누끼
- github actions
- drf custom error
- Django FCM
- 플러터 얼럿
- 플러터 싱글톤
- Watch App for iOS App vs Watch App
- PencilKit
- flutter deep link
- flutter dynamic link
- 장고 Custom Management Command
- Flutter Text Gradient
- cocoapod
- 구글 Geocoding API
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |