Debounce는 주어진 시간 간격 동안 이벤트가 발생하지 않을 때만 특정 함수를 실행하도록 하는 기술입니다. 주로 사용자 입력이나 스크롤, 리사이즈와 같은 빈번한 이벤트를 최적화하기 위해 사용됩니다. Debounce는 특히 웹 애플리케이션에서 성능을 향상시키고 불필요한 작업을 줄이는 데 유용합니다.
Debounce는 JavaScript의 타이머를 이용하여 동작합니다. 이벤트가 발생할 때마다 타이머를 초기화하고, 지정된 시간 간격이 지나야만 함수를 실행합니다. 만약 그 시간 동안 추가적인 이벤트가 발생하면 타이머가 다시 설정되어 함수 실행이 지연됩니다. 결과적으로, 이벤트가 발생하지 않는 특정 시간 이후에만 함수를 호출합니다.
function debounce(func, delay) {
let timeoutId;
return function (...args) {
// 이전 타이머가 존재하면 제거
if (timeoutId) {
clearTimeout(timeoutId);
}
// 새로운 타이머 설정
timeoutId = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}
// 사용 예시
const handleInput = debounce(function (event) {
console.log("Input value:", event.target.value);
}, 300); // 300ms의 지연
Debounce는 성능을 최적화하고 사용자 경험을 개선하는 유용한 기술입니다. 빈번한 이벤트 처리를 효율적으로 관리할 수 있지만, 반응 지연과 구현 복잡성 등 단점도 존재합니다. 적절한 사용과 설정을 통해 이러한 장점을 최대화하고 단점을 최소화할 수 있습니다.