Debounce , Throttle
Debonce와 Throttle 은 무슨차이가 있을까요 ?
먼저 Debounce 와 Throttle을 각각 알아보도록 하겠습니다.
Debounce
debounce 는 이벤트를 그룹화하여 특정시간이 지난 후 마지막 이벤트만을 발생하도록 하는 기술입니다.
위의 마블다이어그램의 상황을 테스트코드로 작성해 보았습니다.
debounce 측정시간을 300ms로 잡고
[red] (--300ms-- {red발행} -- 50ms경과--) [yellow](--100ms--) [green] (--200ms--{green발행} -- 150ms--)
[blue](--300ms -- {blue발행} -- 50ms) end
이 되게 됩니다.
Throttle
이벤트를 일정한 주기마다 발생하도록 하는 기술입니다.
throttle first는 일정한 시간동안 맨 처음 발생한 이밴트만 발행합니다.
위 마블다이어그램을 테스트 코드로 작성해 보았습니다.
throttle시간을 300ms로 잡고
[red] {red발행} (--300ms--) [yellow]{yellow 발행}(--150ms--) [green](--150ms--) [sky] {sky발행}(--150ms--) [deep_sky](--150ms--) [pink]{pink발행}(--100ms--)
Debounce 와 Throttle 의 차이
Debounce는 아무리 많은 이벤트가 발생해도 모두 무시하고 특정 시간사이에
어떤 이벤트도 발생하지 않았을 때 딱 한번만 마지막 이벤트를 발생시키는 기법이고
Throttle은 특정 시간이 지나면 이벤트가 무조건 발생하는 기법이다.
'Rx' 카테고리의 다른 글
RxDart에 대하여 알아보기 (17) | 2020.08.13 |
---|---|
TestObserver ,TestScheduler 를 이용한 테스트작성하기 (0) | 2019.09.10 |
RxAndroid Scheduler 자세히 알아보기 (0) | 2019.09.09 |
RxJava 테스팅과 Flowable-5( Flowable을 활용한 배압 이슈 대응하기) (2) | 2019.01.01 |
RxJava 테스팅과 Flowable-4( Flowable 클래스) (0) | 2019.01.01 |
댓글