1. Throttle이란?


Debounce가 이벤트를 그룹화하여 특정 시간이 지난 후 하나의 이벤트만 발생하도록 하는 기술이라면,

Throttle은 이벤트를 일정한 주기마다 발생하도록 하는 기술이다.

Debounce ⇒ 아무리 많은 이벤트가 발생해도 무시하고 특정 시간사이에 어떤 이벤트도 발생하지 않았을 때 딱 한번만 마지막 이벤트를 발생시킨다.

Throttle ⇒ 설정 시간마다 정기적으로 기능을 실행시킨다. (몇초마다 또는 몇 밀리세컨드 마다)

2. Throttle은 왜 사용하는가?


예를 들어 Throttle의 설정시간으로 1ms(밀리세컨드)를 주게되면 해당 이벤트는 1ms 동안 최대 1번만 발생하게 된다. 특징 자체가 실행 횟수에 제한을 거는 것이기 때문에 성능 문제를 해결하기 위해 사용한다.

ex)

scroll 이벤트가 발생할 때 어떤 작업이 실행되도록 했다면, 매우 빈번하게 실행되기 때문에 큰 버퍼링이 걸릴 수 있는데, 이럴 경우 Throttle을 사용한다면 몇 초에 한번 또는 몇 밀리세컨드에 한 번 씩만 실행되게 제한을 걸 수 있다.

Throttle 사용 예시