상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
참치 통조림을 활용한 먹거리 예절은 무엇인가요?
첫만남에 손잡는 남자와 함께한 특별한 날이 있다면?
"That"과 "Which"는 어떻게 구분하나요?
30대 남자 솔로가 많은 이유는 개인적 가치관의 변화 때문인가요?
30대 남자 솔로가 많은 이유는 만남의 환경이 변화했기 때문인가요?
상속받은 재산을 처분할 때 주의사항은 무엇인가요?
상속 시 가족 간의 갈등을 줄이기 위한 방안은 무엇인가요?
상속과 관련된 온라인 상담 서비스는 어디서 찾을 수 있나요?
부산에서 즐길 수 있는 연말연시 행사하는 곳은 어디인가요?
30대 초반 여자 현실에서의 행복은 어떻게 정의하나요?
30대 초반 여자 현실에서의 시간 투자에 대한 관점은?
고백멘트를 준비하는 데 있어 친구의 도움이 필요한가요?
Previous
Next
수정하기 - 자바스크립트에서 debounce와 throttle의 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Debounce와 Throttle은 <a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 성능 최적화를 위해 자주 사용되는 두 가지 기술입니다. 이들은 이벤트가 발생하는 빈도를 조절하여 불필요한 함수 호출을 줄이는 데 도움을 줍니다. 하지만 이 두 가지는 서로 다른 방식으로 작동하며, 각각의 사용 사례가 다릅니다. Debounce Debounce는 특정 이벤트가 발생한 후 일정 시간 동안 추가 이벤트가 발생하지 않을 때만 함수를 실행하는 방식입니다. 예를 들어, 사용자가 입력 필드에 텍스트를 입력할 때, 입력이 멈춘 후 지정된 시간(예: 300ms)이 지나면 비로소 입력값을 처리하는 함수를 호출합니다. 이렇게 하면 사용자가 입력하는 동안 여러 번 함수를 호출하는 것을 방지하고, 최종 입력값에 대해서만 처리를 하게 됩니다. 사용 예시 - 검색 <a href='https://sangseek.com/sangseeks/자동완성/ko'>자동완성</a> : 사용자가 검색어를 입력할 때마다 API를 호출하는 대신, 입력이 멈춘 후에만 API를 호출하여 <a href='https://sangseek.com/sangseeks/검색 결과/ko'>검색 결과</a>를 가져옵니다. - 창 크기 조정 : 사용자가 브라우저 창의 크기를 조정할 때, 크기 조정이 끝난 후에만 레이아웃을 업데이트합니다. 코드 예시 ```javascript function debounce(func, delay) { let timeoutId; return function(...args) { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(() => { func.apply(this, args); }, delay); }; } // 사용 예 c<a href='https://sangseek.com/sangseeks/onst/ko'>onst</a> handleInput = debounce(() => { console.log('Input processed'); }, 300); document.getElementById('inputField').addEventListener('input', handleInput); ``` Throttle Throttle은 특정 이벤트가 발생할 때마다 함수를 호출하는 것이 아니라, 일정한 시간 간격으로 함수를 호출하는 방식입니다. 즉, 이벤트가 발생하더라도 설정된 시간 간격이 지나기 전까지는 함수를 한 번만 실행합니다. 이 방식은 주기적으로 함수를 실행해야 하는 경우에 유용합니다. 사용 예시 - 스크롤 이벤트 : 사용자가 페이지를 스크롤할 때, 스크롤 위치를 추적하거나 애니메이션을 업데이트하는 함수를 일정 간격으로 호출합니다. - 윈도우 리사이즈 : 사용자가 창 크기를 조정할 때, 일정 시간 간격으로 레이아웃을 업데이트합니다. 코드 예시 ```javascript function throttle(func, limit) { let lastFunc; let lastRan; return function(...args) { if (!lastRan) { func.apply(this, args); lastRan = Date.now(); } else { clearTimeout(lastFunc); lastFunc = setTimeout(() => { if ((Date.now() - lastRan) >= limit) { func.apply(this, args); lastRan = Date.now(); } }, limit - (Date.now() - lastRan)); } }; } // 사용 예 const handleScroll = throttle(() => { console.log('Scroll event processed'); }, 200); window.addEventListener('scroll', handleScroll); ``` 차이점 요약 1. 동작 방식 : - Debounce : 마지막 이벤트 발생 후 지정된 시간 동안 추가 이벤트가 없을 때 함수를 실행. - Throttle : 지정된 시간 간격으로 함수를 실행, 이벤트가 발생하더라도 그 시간 간격 내에서는 함수를 호출하지 않음. 2. 사용 사례 : - Debounce : 사용자 입력, 검색 자동완성 등에서 유용. - Throttle : 스크롤, 리사이즈 등에서 주기적으로 상태를 업데이트할 때 유용. 3. 성능 : - Debounce 는 불필요한 함수 호출을 줄여 메모리와 CPU 사용량을 줄이는 데 효과적입니다. - Throttle 은 이벤트가 발생하는 동안에도 지속적으로 함수를 호출하므로, 주기적인 업데이트가 필요한 경우에 적합합니다. 결론 Debounce와 Throttle은 각각의 필요에 따라 적절히 사용해야 합니다. 이벤트 처리의 성능을 최적화하고 사용자 경험을 향상시키기 위해, 어떤 상황에서 어느 기술을 사용할지 잘 판단하는 것이 중요합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기