Javascript

[Javascript] 이벤트 루프와 Promise

먹세 2021. 10. 9. 14:22

 

 

이벤트루프란, 단일 호출 스택인(싱글쓰레드) javascript에서 비동기 처리를 할 때 꼭 필요한 기능이다.

비동기 작업이 끝난 후, 콜백함수들을 보관하고있는 작업큐(Task Queue/Callback Queue/Event Queue 등으로 불린다)에서 콜스택으로 작업을 푸시 해주는 역할을 한다.

콜스택을 주시하고 있다가 콜스택이 비어있게 되면 작업큐에 대기하고있는 작업을 콜스택으로 푸시 해준다.

ES6를 지원하는 자바스크립트 런타임 환경에서는 작업큐에 Micro Task Queue라는 것이 추가 되었다.

ES6부터 공식적으로 지원하게 된 Promise도 대표적인 비동기 처리함수 인데,

바로 이 Promise의 콜백은, 기존의 setTimeout 등과는 달리 Micro Task Queue로 들어가게 된다. 

Micro Task Queue 는 Task Queue 보다 우선적으로 처리되므로 Promise의 콜백이 setTimeout 보다 빨리 처리된다.

 

 

 

참고자료 : 

https://www.youtube.com/watch?v=cCOL7MC4Pl0 

 

이벤트 루프에 대한 좋은 글

https://blog.sessionstack.com/how-javascript-works-event-loop-and-the-rise-of-async-programming-5-ways-to-better-coding-with-2f077c4438b5

 

How JavaScript works: Event loop and the rise of Async programming + 5 ways to better coding with…

Welcome to post # 4 of the series dedicated to exploring JavaScript and its building components. In the process of identifying and…

blog.sessionstack.com

https://medium.com/sjk5766/javascript-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%95%B5%EC%8B%AC-event-loop-%EC%A0%95%EB%A6%AC-422eb29231a8

 

JavaScript 비동기 핵심 Event Loop 정리

자바스크립트는 단일 스레드 기반으로 비동기로 동작하나요?

medium.com

 

 

Promise와 이벤트 루프에 대한 좋은 글

https://devlog.changhee.me/posts/Promise%EC%99%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84/

 

Promise와 이벤트 루프

아래의 코드는 Promise 가 이벤트 루프에서 어떻게 처리되는지 확인해보기 위한 코드이다.

devlog.changhee.me

 

 

 

반응형