[JavaScript] JavaScript, Event Loop

선영·2022년 5월 18일
0

JavaScript

목록 보기
22/27
post-thumbnail

FE 면접스터디 5주차

🤔 JavaScript는 어떤 언어인가?


💡 자바스크립트는 싱글스레드 언어이다.

  • 즉, 콜스택(호출스택)을 하나만 사용한다.
  • 즉, 동시에 한가지 일만 처리할 수 있다.
  • 자바스크립트는 인터프리터로 동작하기 때문에 한 줄 단위로 코드를 해석하고 실행한다.

💡 자바스크립트 엔진은 자바스크립트 코드를 해석하고 실행하는 인터프리터이다.

  • 크게 메모리힙콜스택(호출스택)으로 구성되어있다.
  • 메모리힙메모리할당이 일어나는 창고
  • 호출스택함수가 호출되는 순서대로 쌓이는 공간

💡 웹 브라우저 전체에서 Web API가 멀티스레드로 동작된다.

  • 웹 브라우저는 자바스크립트 엔진 이외에도 Web API, 이벤트루프, 콜백큐(태스크큐) 등을 갖고있다.
  • 이 중 Web API가 멀티스레드로 동작된다.
  • 이벤트루프, 콜백큐(태스크큐)는 Web API가 자바스크립트 엔진과 상호연동을 하기 위해서 필요한 것들이다.

결론: 이렇듯 자바스크립트 엔진 자체는 싱글 스레드 언어이지만, 자바스크립트가 구동되는 웹 브라우저 환경에는 여러가지의 스레드가 사용된다.


🔁 이벤트 루프(Event Loop)


💡 자바스크립트가 어떻게 내부적으로 동작하는지 알 수 있다.

[이벤트 루프(1/2)] JS로 개발하는데 내부 동작을 모르면 곤란합니다 | 코드 실행 과정
[이벤트 루프(2/2)] 여러분은 이제 JS를 알게 됐습니다 | ㅊㅋㅊㅋ💕🎉
[10분 테코톡] 🍗 피터의 이벤트루프

  • 이벤트루프는 콜스택과 콜백큐를 주시하다가 콜스택이 비어있으면, 들어온 순서대로 콜백큐의 콜백함수들을 콜스택에 집어넣어 준다.
  • 콜백큐는 마이크로태스크큐(잡큐), 애니메이션 프레임, 태스크큐(이벤트큐) 세 가지로 나누어질 수 있다.
  • 콜스택으로 넘어가는 우선순위는 마이크로태스크큐 > 애니메이션 프레임 > 태스크큐 이다.

💡 콜백함수란? 특정함수의 인자로 들어가는 함수


💡 비동기적으로 실행되는 것을 동기적으로 실행하는 방법?

Promise MDN
Using promises MDN

  • Promise객체를 활용한다.
  • 동기(=코드가 적혀있는 순서대로)
  • 비동기(=코드의 순서를 그대로 따르지 않고 동작)

https://private.tistory.com/24
https://velog.io/@yangddu/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0

profile
Superduper-India

0개의 댓글