본문 바로가기
Javascript

이벤트루프(event loop)

by flykimjiwon 2022. 4. 6.
반응형

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

 

그래서 다른 언어들처럼 무조건 순차적으로 코드가 실행되지않는다.

 

위그림의 메모리힙에는 함수나, 선언한 변수가 들어간다. 콜스택은 실제로 실행하는 코드를 실행하는 공간이다.

 

1.console.log('첫번쨰실행')

2.setTimeout(() => {console.log("두 번째 메시지")}, 5000);

3.console.log('세번째실행')

이런식으로 실행하게되면

 

1 -> 5초뒤2번, ->3 순으로 실행되는게아니라

 

1 -> 3 -> 5초뒤2번 이렇게 실행되게 된다.

 

즉 먼저 실행이 완료된 순으로 실행되는것이 자바스크립트의 특성이다.

 

요약하면 코드의 실행순서만 볼때,

 

먼저 실행되는순서로 실행이 된다. 다만 위 그림에서도 알 수있듯이

 

비동기적인 코드들은 전부 콜백큐로 빠지게 된다.

그리고 아래 그림에는 마이크로 태스크큐, 매크로 태스크큐만 있는데

 

실제로는 콜백큐는 여러 큐로 구성되어있지만 크게

 

Microtask Queue, Animation Frames, Task Queue로 구성 되어있다고한다.

 

즉 콜스택 -> WEB API로가고 여기서 종류에따라 ->종류별 큐로 이동 ->다시 여기서 우선순위에 따라

 

콜스택으로 돌아와 실행되는데 이때 순서는 마이크로,애니메이션,태스크큐 순이라고한다.

 

-참고한 링크

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/JavaScript#javascript-event-loop

 

GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...

github.com

https://velog.io/@code-bebop/JS-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84-%EC%BD%9C%EB%B0%B1-%ED%81%90

 

JS 이벤트 루프, 콜백 큐

이벤트 루프가 뭘까? 콜백 큐는 또 뭘까? 이는 JS의 비동기적 코드와 밀접한 연관이 있다.

velog.io

https://velog.io/@yejineee/%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84%EC%99%80-%ED%83%9C%EC%8A%A4%ED%81%AC-%ED%81%90-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C-%ED%83%9C%EC%8A%A4%ED%81%AC-%EB%A7%A4%ED%81%AC%EB%A1%9C-%ED%83%9C%EC%8A%A4%ED%81%AC-g6f0joxx

 

이벤트 루프와 태스크 큐 (마이크로 태스크, 매크로 태스크)

자바스크립트는 싱글 스레드 기반의 언어이고, 자바스크립트 엔진은 하나의 호출 스택만을 사용한다. 이는 요청이 동기적으로 처리되어, 한 번에 한 가지 일만 처리할 수 있음을 의미한다. 만약

velog.io

 

반응형

'Javascript' 카테고리의 다른 글

브라우저 렌더링 원리  (0) 2022.04.07
화살표 함수(arrow function)  (0) 2022.04.06
스코프, 클로져(Closure)  (0) 2022.04.06
setTimeout() 함수 쿡북  (0) 2022.04.02
새로고침 메서드 location.reload()  (0) 2022.04.02