Javascript
event loop란 무엇일까?
리액트바오
2022. 11. 9. 14:47
event loop란
event loop는 Callback Queue에서 하나씩 꺼내서 동작시키는 Loop를 말한다.
이벤트 루프를 이해하기 위해서는 먼저 자바스크립트의 특징을 알아야한다.
자바스크립트는
1. 한 번에 하나의 작업만 처리 할 수 있다. (자바 스크립트는 단일 스레드 기반의 언어이다.)
2. 비동기로 동작을 하는데, 비동기로 동작하는것은 자바스크립트가 아닌 브라우저에서 하는 것이다.
Memory Heap : 메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역이다. 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
Call Stack : 실행된 코드의 환경을 저장하는 자료구조로, 함수 호출 시 이곳에 저장된다. 어떤 함수를 저장하면 스택에 쌓고 또 다른 함수를 호출하면 그 다음 스택에 쌓이면서 LIFO(Last In First Out)로 가장 위에 쌓인 함수를 가장 먼저 처리한다.
Web APIs : Web API는 브라우저에서 제공하는 API로 DOM, Ajax, SetTimeOut 등이 있다.
Callback Queue : 함수를 저장하는 자료구조로, Call Stack과는 다르게 가장 먼저 들어온 함수부터 가장 먼저 처리한다.
Event Loop : 이벤트 루프는 call stack이 다 비워지면 callback queue에 존재하는 함수를 하나씩 call stack으로 옮기는 역할을 한다.