상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 debounce와 throttle의 차이점은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Debounce와 Throttle은 <a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 이벤트 처리 성능을 최적화하기 위해 사용되는 두 가지 기법입니다. 이 두 기법은 비슷한 목적을 가지고 있지만, 그 동작 방식과 사용되는 상황이 다릅니다. 아래에서 각각의 개념과 차이점을 자세히 설명하겠습니다. Debounce Debounce 는 특정 이벤트가 발생한 후 일정 시간 동안 추가적인 이벤트가 발생하지 않을 때, 마지막 이벤트만 실행하는 방식입니다. 주로 사용되는 상황은 사용자가 입력하는 동안 발생하는 이벤트(예: `keyup`, `input`)를 처리할 때입니다. 예를 들어, 사용자가 검색창에 입력할 때마다 API를 호출하는 대신, 사용자가 입력을 멈춘 후 일정 시간(예: 300ms) 동안 기다렸다가 마지막 입력에 대한 요청을 보내는 것입니다. 사용 예시```javascriptfunction debounce(func, delay) { let timeout; return function(...args) { const context = this; clearTimeout(timeout); timeout = setTimeout(() => func.apply(context, args), delay); };}const handleInput = debounce(() => { console.log('API 호출');}, 300);document.getElementById('search').addEventListener('input', handleInput);```위의 예시에서 사용자가 입력을 멈추고 300ms가 지나면 `handleInput` 함수가 호출됩니다. 만약 사용자가 계속 입력하면 `clearTimeout`이 호출되어 이전 타이머가 취소되고 새로운 타이머가 설정됩니다. Throttle Throttle 은 특정 이벤트가 발생한 후 일정 시간 간격으로만 함수를 실행하는 방식입니다. 즉, 이벤트가 발생하더라도 설정한 시간 간격 내에서는 함수를 한 번만 실행합니다. 이 기법은 스크롤 이벤트나 리사이즈 이벤트와 같이 빈번하게 발생하는 이벤트를 처리할 때 유용합니다. 예를 들어, 사용자가 스크롤할 때마다 화면의 위치를 추적하는 경우, 너무 많은 이벤트가 발생하지 않도록 일정 시간 간격으로만 위치를 업데이트하도록 할 수 있습니다. 사용 예시```javascriptfunction <a href='https://sangseek.com/sangseeks/throttle/ko'>throttle</a>(func, limit) { let lastFunc; let lastRan; return function(...args) { const context = this; if (!lastRan) { func.apply(context, args); lastRan = Date.now(); } else { clearTimeout(lastFunc); lastFunc = setTimeout(function() { if ((Date.now() - lastRan) >= limit) { func.apply(context, args); lastRan = Date.now(); } }, limit - (Date.now() - lastRan)); } };}const handleScroll = throttle(() => { console.log('스크롤 위치 업데이트');}, 200);window.addEventListener('scroll', handleScroll);```위의 예시에서 `handleScroll` 함수는 스크롤 이벤트가 발생할 때마다 200ms 간격으로만 호출됩니다. 이로 인해 너무 많은 함수 호출을 방지할 수 있습니다. Debounce와 Throttle의 차이점1. 동작 방식 : - Debounce : 이벤트가 발생한 후 일정 시간 동안 추가 이벤트가 없을 때 마지막 이벤트만 실행합니다. - Throttle : 이벤트가 발생한 후 설정된 시간 간격으로 함수를 실행합니다.2. 사용 사례 : - Debounce : 입력 필드에서의 검색 제안, 버튼 클릭 후의 <a href='https://sangseek.com/sangseeks/중복 요청/ko'>중복 요청</a> 방지 등. - Throttle : 스크롤 이벤트, 리사이즈 이벤트 등 빈번하게 발생하는 이벤트 처리.3. 성능 : - Debounce : 사용자가 입력을 멈춘 후에만 실행되므로, 불필요한 호출을 줄이는 데 효과적입니다. - Throttle : 정해진 시간 간격으로 실행되므로, 이벤트가 자주 발생하는 경우에도 성능을 유지할 수 있습니다. 결론Debounce와 Throttle은 <a href='https://sangseek.com/sangseeks/자바스크립트/ko'>자바스크립트</a>에서 이벤트 처리를 최적화하는 데 매우 유용한 기법입니다. 각각의 동작 방식과 사용 사례를 이해하면, 적절한 상황에서 올바른 기법을 선택하여 성능을 개선할 수 있습니다. 이벤트가 빈번하게 발생하는 경우에는 Throttle을, 특정 이벤트가 멈춘 후에만 실행하고 싶을 때는 Debounce를 사용하는 것이 좋습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기