자바스크립트의 이벤트 루프(Event Loop)란?

2026. 3. 31. 21:42·Frontend

 

해당 내용은 2022.05.13에 작성되었습니다.


 

이벤트 루프(Event Loop)를 설명하기 앞서 JavaScript의 특징부터 알고 가야 합니다.

JavaScript는 싱글쓰레드 언어라고 많이 알려져 있습니다. 싱글쓰레드라고 한다면 여러 개의 작업이 있더라도 한 번에 하나의 작업만 수행할 수 있습니다. 하지만 JavaScript를 사용해 보면 멀티쓰레드처럼 동시에 여러 작업을 수행할 수 있다는 것을 알 수 있습니다. 그렇다면 JavaScript는 정말 싱글쓰레드 언어가 맞을까요?

JavaScript는 싱글 쓰레드언어가 맞을까?

결론부터 말씀드리자면 맞습니다. 그 이유는 JavaScript의 메인쓰레드인 이벤트 루프가 싱글 쓰레드이기 때문입니다. 하지만 이벤트 루프만 독립적으로 실행되는것이 아닌 웹 브라우저나 NodeJS 같은 멀티쓰레드 환경에서 실행되고 이를 적절하게 사용함으로써 멀티쓰레드처럼 사용이 가능한 것입니다.

JavaScript 동작 과정

사진만 봤을 때는 이해가 잘 가지 않습니다 하나씩 정리해가며 알아보도록 하겠습니다.

JS Engine

JavaScript 엔진은 코드를 이해하고 실행을 도와주는 역할을 합니다. 그중에서도 가장 대표적인 엔진으로는 Google의 V8 엔진입니다. 이외에도 각 브라우저 별로 여러 가지 엔진들이 존재하지만 JavaScript 엔진은 크게 Memory Heap과 Call Stack으로 이루어져 있습니다.

  • Memory Heap : 메모리 할당이 일어나는 장소
  • Call Stack : 코드가 실행될 경우 하나씩 stack의 형태로 쌓이는 장소

Memory Heap & Call Stack

먼저 Memory Heap에 있는 사용자가 작성한 코드들은 Call Stack에서 Stack 방식으로 쌓이며 코드를 실행하게 되는데 이때 동기 함수들은 그대로 실행하게 되고 비동기 함수들은 Web API로 처리하게 되며 일을 분배합니다.

  • Stack : 후입선출(LIFO)로 마지막에 들어간 것이 먼저 나가는 방식

Web API

Javscript를 사용하면서 우리가 많이 사용하는 API 들은 사실 JavaScript에서 지원하는 것이 아닌 웹 브라우저에서 제공하는 API로 DOM ,AJAX, Timeout 등이 있습니다.

Call Stack에서 실행된 비동기 함수는 Web API에서 처리를 하게 되고 그동안에 Call Stack은 나머지 동기 함수들을 처리하게 됩니다.

Web API는 비동기 함수들을 처리하며 작업이 완료된 비동기 함수들을 Callback Queue로 넘겨주게 됩니다.

Callback Queue

Callback Queue는 비동기 함수들을 보관하는 장소로 Event Loop에서 비동기 함수를 꺼내기 전까지는 계속 Queue방식으로 보관하게 됩니다.

  • Queue : 선입선출(FIFO)로 먼저 들어간 것이 먼저 나가는 방식

참고 영상

https://www.youtube.com/watch?v=8aGhZQkoFbQ&embeds_referring_euri=https%3A%2F%2Fbox8741.github.io%2F&source_ve_path=Mjg2NjY

참고 자료

  • Event Loop (이벤트 루프)

'Frontend' 카테고리의 다른 글

Gatsby "document is not defined" 문제 해결하기  (0) 2026.03.31
Gatsby 사이트맵(Sitemap) 적용하기  (0) 2026.03.31
Gatsby 블로그 RSS Feed 적용하기  (0) 2026.03.31
REST API란?  (0) 2026.03.31
SPA(Single Page Application) vs MPA(Multi Page Application)  (0) 2026.03.31
'Frontend' 카테고리의 다른 글
  • Gatsby 사이트맵(Sitemap) 적용하기
  • Gatsby 블로그 RSS Feed 적용하기
  • REST API란?
  • SPA(Single Page Application) vs MPA(Multi Page Application)
민콕이
민콕이
안녕하세요
  • 민콕이
    공부 내용 정리 블로그
    민콕이
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • Network R&S (16)
      • Frontend (7)
      • Windows & Linux (16)
      • Database (2)
      • Docker (2)
      • Kubernetes (1)
      • Private Cloud (1)
      • Public Cloud (8)
        • AWS (8)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • github
    • velog
  • 공지사항

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
민콕이
자바스크립트의 이벤트 루프(Event Loop)란?
상단으로

티스토리툴바