자바스크립트 이벤트 루프

함성준·2021년 6월 3일
0

1. 사전 지식

실행 컨텍스트

실행 컨텍스트를 통해 자바스크립트 어플리케이션 실행시 코드 한줄한줄 실행해 나가는 것이 아니라 함수단위의 실행 콘텍스트를 생성하고 이후 콜 스택에서 컨텍스트 Pop 연산을 통해 콘텍스트 하나씩 실행해 나가는 과정을 이해한다.

콜 스택

전역 콘텍스트와 실행 콘텍스트의 존재를 이해하고 실행하는 하나의 함수는 하나의 실행 콘텍스트 단위로 콜 스택에 푸시되는 것을 이해한다. 자바스크립트가 싱글 스레드로 동작하는 점을 고려하여 콜 스택에 쌓여있는 콘텍스트도 한번에 하나씩 밖에 처리하지 못하는 점을 확인한다.

이벤트 루프와 태스크 큐

자바스크립트 이벤트 루프의 대략적인 구조를 확인하고 제시 되는 용어인 메인 스레드, 매크로 태스크 큐, 마이크로 태스크 큐가 지칭하는 것이 무엇인지 이해한다. 태스크 큐에 있는 콜백 태스크가 실행될 수 있는 조건을 확인한다.

2. 도전 목표

사전지식으로 제안된 내용을 숙지하였다는 가정하에, 극단적인 예시를 제안한다. 메인 스레드에서 하나의 동기적인 작업이 매우 긴 시간을 차지하게 된다면 어플리케이션의 UI와 상호작용 하는 과정에서 발생한 이벤트 핸들러, setInterval, Promise 등, 태스크 큐에 쌓여있는 작업들이 처리되지 못하는 상황이 발생하게 된다.

메인 스레드에서 처리되고 있는 아주 큰 동기적인 작업이 완전히 처리되어야만 태스크 큐의 작업을 실행할 수 있는가에 대한 물음을 던지고 동기적인 작업 완료까지의 시간이 조금 더 걸리더라도 태스크 큐의 작업도 중간중간 실행할 수 있으려면 어떤식의 소스코드 구현을 통해 이런 문제를 해결 할 수 있는지 제안한다.

3. 유사 사례

0개의 댓글