이벤트(event)를 처리하는 반복되는 동작(loop)
즉, Node.js가 비동기-이벤트 동작을 처리하는 일련의 반복 동작
비동기 코딩이 어떤 순서로 수행되는지에 대해 이해할 수 있음
이벤트 루프는 Node.js만의 특징은 아님.
JavaScript의 일반적인 동작 방식으로, 브라우저에도 있음
브라우저와 Node.js의 이벤트 루프는 기본적인 동작방식에 큰 차이가 없음
이벤트 루프의 기본적인 동작 원리를 이해하는 것이 중요
Call Stack : 작성된 함수들이 등록되는 LIFO 스택
이벤트 루프는 콜스택이 비어있을 때까지 스택의 함수를 실행
Message Queue : setTimeout 같은 지연 실행 함수를 등록하는 FIFO 큐
정해진 timing이 끝나고, 콜스택이 비어있을 경우
등록된 함수를 콜스택에 추가
Job Queue : Promise에 등록 된 콜백을 등록하는 FIFO 큐
상위 함수가 종료되기 전에 콜스택이 비어있지 않더라도 잡큐에 등록된 콜백을 콜스택에 추가
이벤트루프는 비동기 동작의 실행 타이밍을 이해하는 것이 중요
setTimeout은 콜스택이 비어있을 때 실행 됨
Promise 는 상위함수가 종료되기 전에 실행 됨