쓰로틀링과 디바운싱에 대해 개념을 정리해보자
쓰로틀링은 사용자가 이벤트를 몇 번이나 발생 시키든 일정한 시간 간격으로 한번만 실행하도록 하는 기법이다.
const clickBtn = document.querySelector('#clickBtn');
const clickCnt = document.querySelector('#clickCnt');
const throttlingCnt = document.querySelector('#throttlingCnt');
let timerId = null;
function throttling(func, timeout = 300) {
if (timerId) {
return;
}
timerId = setTimeout(() => {
func();
timerId = null;
}, timeout);
}
function delayFunction() {
throttlingCnt.innerHTML = parseInt(throttlingCnt.innerHTML) + 1;
}
clickBtn.addEventListener('click', () => {
clickCnt.innerHTML = parseInt(clickCnt.innerHTML) + 1;
throttling(delayFunction);
});
디바운싱은 연속적으로 발생하는 이벤트에서 일정 시간이 지난 후에 함수를 실행하는 기법이다.
const clickBtn = document.querySelector('#clickBtn');
const clickCnt = document.querySelector('#clickCnt');
const debouncingCnt = document.querySelector('#debouncingCnt');
let timerId;
function debouncing(func, timeout = 300) {
clearTimeout(timerId);
timerId = setTimeout(func, timeout);
}
function delayFunction() {
debouncingCnt.innerHTML = parseInt(debouncingCnt.innerHTML) + 1;
}
function handleClick() {
clickCnt.innerHTML = parseInt(clickCnt.innerHTML) + 1;
debouncing(delayFunction);
}
clickBtn.addEventListener('click', handleClick);
디바운싱과 쓰로틀링에 대해 개념이 정리됐다 이런게 있다는 걸 알았으니 나중에 필요할 때 검색해서 적용해봐야겟다
https://www.zerocho.com/category/JavaScript/post/59a8e9cb15ac0000182794fa
https://onlydev.tistory.com/151