디바운싱은 주로 이벤트 기반의 시스템에서 고성능을 유지하기 위해 사용되는 기술입니다. 특정 이벤트나 액션이 짧은 기간 동안 많이 발생할 때, 이를 한 번의 액션으로 '압축'하는 것을 의미합니다.
디바운싱의 대표적인 예시는 사용자의 키 입력을 감지하는 상황입니다. 사용자가 키를 연속으로 빠르게 타이핑할 때, 각각의 키 입력마다 서버에 쿼리를 보내는 것은 비효율적입니다. 따라서 일정 시간동안 입력을 모아서 한 번에 처리하는 방법을 선택하게 되는데, 이것이 바로 디바운싱입니다.
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
}
}
// 사용 예시
const debouncedSave = debounce(() => console.log('Saving data'), 250);
document.querySelector('input').addEventListener('input', debouncedSave);