이벤트나 함수가 실행되는 빈도를 줄여 서버에서 과부하 걸리지 않게 하기 위함
1. Debounce :
여러 번 발생하는 이벤트에서 가장 마지막 이벤트 만을 실행 되도록 만드는 것
예시) 프론트쪽에서 검색할 때 ex) 0.5초
0.5초 안에 이벤트가 일어났으면 초기화 계속하다가 0.5초가 지나도 아무 이벤트 일어나지 않으면 서버에 콜(submit) 날리는 것
2. Throttle:
개념 : 여러 번 발생하는 이벤트를 일정시간 동안 한 번만 실행 되도록 만드는 것. 일정 시간 동안 만 기다리고,이벤트를 실행시킨 후 재차 기다림.
ex) 스크롤사용할 때 EventListener 폭주 - 브라우저 죽을 수 있다.
0.5초 동안 EventListener 한 번만 실행하겠다고 하는 것
-> Debounce 는 입력이 끝날때까지 무한적으로 기다리지만, Throttle 는 입력이 시작되면, 일정 주기로 계속 실행한다.
Stack, EventLoop, Queue
자바스크립트는 single thread 언어이다.
자바스크립트는 위에서 아래로 순차적으로 위에가 처리된 후에야 아래로 넘어가는 게 아니고, 대기실로 일단 보내는 코드들이 있다. 예를 들어) setTimeout, Ajax 요청, eventListener 등
Stack : 내가 짠 코드를 실행해 주는 곳이며 대기 끝난 코드들이 queue에 있다가 Stack 으로 하나씩 올려 보내준다.(Stack 이 비어있을 때만 하나씩 올려보낸다.) setTimeout의 대기시간이 0초여도 대기실로 갔다가 다음에 실행된다.
--> 자바스크립트는 동기적으로 원래 처리된다. 한 번에 한 줄 순서대로.. 그러나, setTimeout, eventListener, ajax함수 쓸 경우 비 동기적인 처리도 가능하게 된다.
확실히 알기 (Promise, Stack, Queue, EventLoop, V8 engine)
https://www.youtube.com/watch?v=_wpXOxh0XVk
'Front-end > JavaScript Language' 카테고리의 다른 글
JavaScript 논리 연산자 &&, ||, 화살표 함수, setInterval (0) | 2023.07.02 |
---|---|
JavaScript - Intermediate1 (변수, null, undefined, 함수) (0) | 2022.11.05 |
preventDefault, stopPropagation (0) | 2022.10.20 |
DOM(문서 객체 모델) & Document 객체 (0) | 2022.09.12 |
Window 객체 (0) | 2022.09.12 |