Debouncing?

BOONG GI JUNG·2024년 2월 2일
0

FrontEnd

목록 보기
22/27

Debouncing이란

프론트엔드 개발에서 디바운싱(debouncing)은 사용자 인터페이스(UI)에서 이벤트 핸들링을 개선하기 위한 기술 중 하나입니다. 주로 사용자가 입력하는 것과 관련된 상황에서 유용하게 쓰이며, 예를 들면 검색창에 텍스트를 입력할 때나 화면을 스크롤할 때 등 다양한 상황에서 적용됩니다.

디바운싱의 주요 목적

이벤트 핸들러 호출 제어
사용자 입력에 따라 이벤트 핸들러가 계속 호출되지 않도록 하여 불필요한 리소스 낭비를 방지합니다.

부드러운 경험 제공
사용자 입력이 빈번하게 발생하는 경우, 디바운싱을 통해 이벤트 핸들러가 일정 시간 동안 호출되지 않아 부드러운 UI 상호작용을 가능하게 합니다.

디바운싱을 구현하는 방법

타이머 사용
일정 시간 동안 아무 동작이 없을 때에만 이벤트 핸들러를 호출하도록 타이머를 설정합니다. 이렇게 하면 연속된 입력에 대해 여러 번의 호출을 방지할 수 있습니다.

입력 이벤트 리스너 설정
예를 들어, 검색창에 사용자가 텍스트를 입력할 때마다 타이머를 시작하고, 타이머가 만료되기 전에 새로운 입력이 들어오면 이전 타이머를 취소하고 새로운 타이머를 시작합니다.

JavaScript 코드 예제

function debounce(func, delay) {
  let timerId;
  return function() {
    const context = this;
    const args = arguments;
    clearTimeout(timerId);
    timerId = setTimeout(() => {
      func.apply(context, args);
    }, delay);
  };
}
// 검색창 입력 이벤트 핸들러
function search() {
  // 검색 로직을 수행
  console.log("검색 실행");
}
const debouncedSearch = debounce(search, 300); // 300ms 딜레이로 디바운싱 적용
// 검색창 입력 이벤트에 debouncedSearch 함수를 연결
document.getElementById("searchInput").addEventListener("input", debouncedSearch);

결론

이렇게 디바운싱을 적용하면 사용자 경험을 향상시키고 성능을 최적화할 수 있으며, 불필요한 이벤트 핸들링을 방지하여 웹 애플리케이션의 효율성을 높일 수 있습니다.

profile
새로운 기술을 즐기는 라이프 하루에 한번 포스팅하기!

0개의 댓글