1. JavaScript 코드 처리 로직과 필수 모듈

1. V8엔진

  • V8엔진은 싱글스레드로 동작한다.
  • JavaScript는 인터프리팅 언어이다. V8엔진은 JavaScript코드를 해석하고 실행한다. 
  • callstack에 쌓인 호출된 함수들을 순차적으로 실행한다.
  • 기본적인 변수, 객체등을 관리한다.

2. Web APIs

  • V8엔진은 싱글스레드 이므로 한번에 한가지 동작만 가능하다.
  • 정해진 함수를 제공 받아 비동기적 제어 흐름을 가질수 있다. 
  • 이때 정해진 함수들은 callstack에 쌓인후 Web API모듈로 이동해서 Web API들의 도움을 받아 처리가 된다.
  • 정해진 함수들에는 callback함수와 함께 Web API모듈로 이동된다.
  • 그렇게 모듈로 이동된 함수들 외의 것들은 callstack에 쌓인 순서대로 계속 진행이 된다.

3. Queue영역

  • 정해진 함수들이 실행이 완료되면 callback함수들이 Queue영역으로 이동한다.  

4. Event Loop

  • Queue영역에 있는 callback함수들을 다 비워져 있는 callstack으로 이동을 시켜줘서 함수들을 실행가능하게 만든다.
  • callstack이 완전히 다 비워져있어야 Queue영역에서 이동이 가능하다

 

2. setTimeout함수예제를 통한 비동기 코드의 일련의 처리 과정

출처 : ✨♻️ JavaScript Visualized: Event Loop

'JavaScript' 카테고리의 다른 글

JavaScript(6) - async/await  (0) 2022.05.05
JavaScript(5) - promise  (0) 2022.05.03
JavaScript(3) - 실행 컨텍스트  (0) 2022.05.02
JavaScript(2) - 20220425  (0) 2022.04.25
JavaScript(1) - 20220419  (0) 2022.04.19

+ Recent posts