[JS] 디바운스(Debounce)와 스로틀(Throttle ) 그리고 차이점

Throttle, Debounce & Difference

스로틀(Throttle)과 디바운스(Debounce)란 무엇일까?



이 두 가지 방법 모두 DOM 이벤트를 기반으로 실행하는 자바스크립트를 성능상의 이유로 JS의 양적인 측면, 즉 이벤트(event)를 제어(제한)하는 방법입니다.

예를 들어, 웹/앱 사용자가 스크롤(scroll wheel), 트랙패드, 스크롤 막대를 드래깅 한다고 가정해 봅니다.
스크롤(scroll wheel), 트랙패드, 스크롤 막대를 드래깅을 하게 되면 사용자는 크게 느끼지 못할 수 있으나 이 행위로 인해 수많은 스크롤 이벤트가 발생하게 됩니다.
즉, 사용자가 아래로 5000픽셀 정도의 스크롤 다운을 한다면 100 개 이상의 이벤트가 발생될 가능성이 큽니다.
이러한 스크롤(scroll wheel), 트랙패드, 스크롤 막대를 드래깅함으로써 매번 스크롤 이벤트에 대한 콜백(callback)이 발생하고 그 콜백이 수행하는 일이 매우 큰 리소스를 잡아먹게 될 것입니다.
다시 말해, 과도한 이벤트 횟수의 실행으로 이벤트 핸들러가 무거운 계산 및 기타 DOM 조작과 같은 작업을 수없이 많이 수행하는 경우 성능 문제가 발생하고 이는 사용자 경험까지 떨어뜨리게 될 것입니다.


상세내용은 링크를 클릭해서 보세요...


0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
82 [PHP] empty vs is_null vs is_set 비교 최고관리자 09-11 1,608
81 [Font] Every Font Awesome 4.7.0 Icon, CSS Class, & Unicode 최고관리자 08-19 1,621
80 [PHP] 문자열을 구분자로 구분하여 배열로 만들때 whitespace trim시키기 최고관리자 07-29 1,580
79 [PHP] $_SERVER['SERVER_NAME'] vs $_SERVER['HTTP_HOST'] 최고관리자 07-23 1,974
78 [css] Layout을 제대로 하고 싶다면 Flex 와 Grid를 배워보자 최고관리자 07-20 2,001
77 [PHP] define 중복으로 인한 Internal Server Error 500 최고관리자 07-16 1,513
76 [MySQL] Procedure & View 확인 최고관리자 05-25 1,517
75 [JavaScript] JQuery를 이용한 Drag Drop 리스트 순서변경 최고관리자 05-21 3,297
74 [JavaScript] defer 와 async 최고관리자 05-14 1,592
73 [JavaScript] 홈페이지에 날개를 달자 -2 최고관리자 04-26 1,553
72 [HTML] URL 사용 규칙 최고관리자 03-30 1,583
71 [JS] 자바스크립트 쿠키 클래스 최고관리자 03-19 1,610
70 [MySql] mysql error 메세지 모음 최고관리자 03-11 3,396
69 [PHP] TCP Socket Server +2 최고관리자 03-05 3,457
68 [JS] 문자열로 전송된 함수명을 실행하는 방법 최고관리자 02-26 2,015
67 [Javascript] 홈페이지에 날개를 달자 - Animation & Scrolll 효과 Plugin 최고관리자 02-21 1,565
66 [Form] Submit 버턴 만들어 입력데이타 검사하고 Submit 하기. 최고관리자 01-13 1,558
65 [MySQL] Join 걸어서 Update하기 최고관리자 01-07 1,710
64 [Docker] MedDream DICOM Viewer for Orthanc PACS server 최고관리자 01-05 2,185
63 [Docker] 도커 도메인 여러개 사용하기 (Docker multi Domain) (웹서버 여러개) 최고관리자 01-05 6,397