JS Event Loop
[V8 Event Loop](https://texonom.com/v8-event-loop-ca374f98d5234afb93ec1fdd7086790b)  [Cooperative Scheduling](https://texonom.com/cooperative-scheduling-93d38df64c4843e68d71e5db4e0f5752) 


콜 스택을 체크해주는 역할을 하는 것이 이벤트루프
콜 스택이 비어있을 때 콜백 큐의 첫번째 콜백을 넘겨주도록 


[JS Macro Task Queue](https://texonom.com/js-macro-task-queue-5bf29429b574420aaba45d2ce338139a)


[JS Microtask Queue](https://texonom.com/js-microtask-queue-55a58f48d99840ec8e5efa6148f05836)



1. 현재 **콜 스택**에 있는 모든 함수가 실행됩니다. 함수가 값을 반환하면 스택에서 빠져나옵니다.
2. 호출 스택이 비어있으면, 대기중인 모든 **마이크로 태스크**가 콜 스택으로 하나씩 들어가고, 실행됩니다! (마이크로 태스크는 스스로 새로운 마이크로 태스크를 반환해서 효율적으로 무한 마이크로 루프를 생성할 수 있습니다
3. 호출 스택과 마이크로 스택이 모두 비게 되면, 이벤트 루프는 (매크로)태스크 큐에 남아있는 작업이 있는지 확인합니다. 작업이 남아있다면 콜스택으로 들어가서 실행되고, 값을 반환한 후에 빠져나옵니다!
![](https://www.notion.so/image/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--05Fi8vBq--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_66%252Cw_880%2Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F42eatw03fcha0e1qcrf0.gif?table=block&id=04b3409c-b75f-4880-9c6e-08b41d3fa1a2&cache=v2)



> [[번역] 자바스크립트 시각화 : 비동기 처리](https://velog.io/@jjunyjjuny/%EB%B2%88%EC%97%AD-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC)

> [[번역] 자바스크립트 시각화 : 이벤트 루프](https://velog.io/@jjunyjjuny/%EB%B2%88%EC%97%AD-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84)





