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

Throttle, Debounce & Difference

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



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

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


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


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

웹개발

번호 제목 글쓴이 날짜 조회수
42 [MySQL] user Table 권한설명 최고관리자 10-13 2,425
41 [NginX] Codeigniter를 위한 server config 최고관리자 09-09 3,073
40 [Nginx] 역할 최고관리자 09-09 3,009
39 [MySQL] Replace를 이용하여 데이타 내용 치환하기 최고관리자 09-08 2,002
38 [리눅스] Mysql Database 이름을 www.telepasi.com처럼 하면 안됨 최고관리자 09-08 1,958
37 [리눅스] CentOS vsftpd 설치 최고관리자 09-08 2,029
36 [리눅스] 사용자 목록 확인 (Linux User List) 최고관리자 09-08 14,206
35 [NginX] 리버스 프록시(Reverse Proxy)란 최고관리자 09-08 5,395
34 [리눅스] go lang - REST API를 위한 Gin 설치 최고관리자 09-07 2,047
33 [리눅스] go 환경설정 최고관리자 09-07 2,035
32 [리눅스] CentOS7 에서 go Lang 설치하기 최고관리자 09-07 2,005
31 [리눅스] Mysql 원격접속 허용하기 최고관리자 09-07 2,068
30 [서버설치] How to Install PHP 7, NGINX, MySQL on CentOS/RHEL 7.6 최고관리자 09-06 2,073
29 [서버 설치] mysql_secure_installation 최고관리자 09-06 1,984
28 [서버 설치] CentOS7 방화벽 설치 최고관리자 09-06 1,926
27 [DNS] abc.com www.abc.com 레코드 설정 최고관리자 09-05 1,960
26 [리눅스] httpd conf 위치 확인 및 conf 문법검사 명령 최고관리자 09-05 2,682
25 [리눅스] Apache 권한에 대한 참고 사항 최고관리자 09-04 4,677
24 [리눅스] CentOS Apache 주요 디렉토리 최고관리자 09-04 2,137
23 [리눅스] CentOS 6 vs CentOS 7 명령어 대응 최고관리자 09-04 2,261