자바스크립트 이벤트 루프란?

Janny·2023년 5월 23일
0

헷갈리는 개념 정리

목록 보기
15/17

자바스크립트는 싱글스레드 언어이다. 즉 한번에 하나의 함수만 처리할 수 있다. 비동기인 것처럼 작동하는 이유는? 브라우저를 통해 작동하는 과정에서 우리 눈으로는 (시간차가 적기 때문에) 동시에 돌아간다고 착각하는 것이다.

  • Heap: 메모리의 큰 영역을 지칭. 객체는 힙에 할당된다.
  • Stack: 함수 호출 시 이곳에 저장. 가장 위에 놓인 함수를 가장 먼저 처리한다. (Last In First Out) 사실상, 싱글스레드 형식으로 처리하는 메인 스택.
  • WebAPIs: 브라우저에서 제공(내장된)하는 API. 스택에서 실행된 비동기 함수는 WebAPI를 호출하고, WebAPI는 콜백함수를 Callback Queue에 넣는다. (일종의 대기실 같은 곳이다)
  • Callback Queue: 함수를 저장하는 자료구조. 가장 먼저 들어온 함수를 가장 먼저 처리한다.
  • Event Loop: stack이 비워지면, callback queue에 있는 함수를 하나씩 stack으로 옮겨주는 역할을 한다.

setTimeout시간에 0 밀리초를 지정하고 호출하더라도 콜백 함수는 즉시 실행되지 않는다. 실제 실행 시점은 큐에 대기중인 작업의 수에 따라 달라진다. 즉 최소시간을 정해줄 뿐, 정확히 그 시간뒤에 호출하는 것은 아니다.

레퍼런스들
개인적으로 이해에 큰 도움이 된 건 코딩애플님의 강의영상이고, 그 뒤로 유명 유튜브영상과 문서자료들을 읽으면 좀 더 이해가 수월했다.
MDN
유튜브영상
코딩애플
블로그

profile
🐣병아리 개발자의 기록을 위한 공간

0개의 댓글