15.2 자바스크립트 엔진: 스택과 큐
이번에 살펴볼 자료 구조 적용 사례는 자바스크립트 엔진입니다. 자바스크립트 엔진은 스택과 큐를 절묘하게 활용한 아주 멋진 예입니다.
자바스크립트는 싱글 스레드에서 작동하지만 비동기 언어입니다. 스레드가 하나라면 스택 프레임이 쌓이는 콜 스택도 하나일 테고, 그렇다면 한 번에 한 가지 일만 할 수 있을 텐데 우리는 아무런 의심 없이 setTimeout을 사용합니다. 어떤 일을 하다가 시간이 되면 자동으로 다른 일을 한다는 것입니다. 자바스크립트에서는 어떻게 콜백을 사용할 수 있을까요?
예를 하나 들어 보겠습니다. 크롬 브라우저를 켜고 F12를 눌러 개발자 도구를 켠 후 Console 탭을 클릭합니다. 이제 아래 나오는 두 코드를 한 폴더에 두고 js_engine.html 파일의 절대 경로를 복사해서 크롬 주소 창에 붙여 넣어 실행합니다.
코드 15-2 js_engine.html
<html>
<head>
<script src='js_engine.js'></script>
</head>
<body>
</body>
</html>
코드 15-3 js_engine.js
console.log('code starts')
setTimeout(() => {
console.log('callback executed');
}, 1000);
console.log('code ends');