본문 바로가기
javascript

[js] Debouncing

by TTTGGG 2024. 7. 29.
728x90
반응형
SMALL

Debouncing은 특정 이벤트가 연속적으로 발생할 때, 마지막 이벤트가 발생한 후 일정 시간이 지나기 전까지는 해당 이벤트 핸들러가 실행되지 않도록 하는 기법.

주요 목적은 자주 발생하는 이벤트를 제어하여 성능을 최적화하고, 불필요한 함수 호출을 줄이는 것

 

function debounce(func, wait) {
    let timeout;
    return function(...args) {
        const context = this;
        clearTimeout(timeout);
        timeout = setTimeout(() => func.apply(context, args), wait);
    };
}



//
<input type="text" id="searchInput" placeholder="Search...">

<script>
function search(query) {
    console.log(`Searching for: ${query}`);
    // 실제 API 호출 코드가 여기에 들어갑니다.
}

const debouncedSearch = debounce(function() {
    const query = document.getElementById('searchInput').value;
    search(query);
}, 300);

document.getElementById('searchInput').addEventListener('input', debouncedSearch);
</script>

 

Debouncing을 사용해야 하는 상황

 - 연속된 입력 필드 입력, 창 크기 조정, 스크롤 이벤트 등

 

Debouncing 장점

 - 성능 최적화, 효율적인 자원 사용, 사용자 경험 개선

728x90
반응형
LIST

'javascript' 카테고리의 다른 글

[js] transitionend  (0) 2024.08.06
[js] 페이징 컨트롤러 별도 배치  (0) 2024.07.29
[js] 데이터 엑셀로 내려받기  (2) 2024.07.22
[js] 비동기 프로그래밍  (0) 2024.07.22
[js] React/Angular/Vue.js  (0) 2024.07.22