오늘은 Event Loop
에 대해 간단하게 정리해보려고 한다. 나는 What the heck is the event loop anyway? 강의를 통해서 이벤트 루프에 대해 정리해볼 수 있었다.(너무 유용한 강의였다!)
Javascript
는 싱글 스레드 언어로, 한 번에 하나의 작업만을 처리할 수 있다. (하나의 콜스택을 가지고 있기 때문에 동기적으로만 동작할 수 있다는 특징이 있다.) 하지만, Javascript
를 사용해서 개발하다보면, 이벤트를 처리하거나 여러 개의 작업을 요청할 때도 있다. 싱글 스레드인 Javascript
에서 어떻게 가능할까? 바로 Event Loop가 Javascript에 동시성을 지원해주고 있는 것이다.
Javascript에서 비동기 호출이 발생하면 해당 작업을 브라우저의 WebAPIs로 넘긴다. 그리고 동기적인 작업을 콜스택에 먼저 담아서 처리한다. 이후에 비동기 호출 작업이 끝나면 WebAPIs는 비동기 호출의 콜백함수를 콜백큐에 추가한다. 이벤트 루프는 콜스택과 콜백큐의 상태를 확인하며, 콜 스택이 비었을 때 콜백큐에 있는 콜백을 콜스택으로 밀어 올려준다.