이벤트 루프란 자바스크립트 엔진이 코드를 해석하고 코드를 실행하는 일련의 과정이다.
🧩 자바스크립트 엔진의 특징
테스크 큐에서 대기하다가 콜 스택으로 올라가서 실행된다. 마이크로 테스크 큐도 있지만 굳이 형식을 나누지 않는다.
💡 마이크로 테스크 큐는 프로미스 등등 비동기에서도 우선순위에 따라서 나누지만 굳이 나눠서 비교할 필요는 없어 보인다. 어차피 비동기 통신은 주로 동기적으로 제어하려고 사용하는데 우선순위가 중요하지 않기 때문이다.
🧩 비동기로 처리되는 작업의 종류
🧩 비동기 처리 코드 예제
// 각각의 함수들을 정의
const func1 = () => console.log('1');
const func2 = () => console.log('2');
// setTimeOut를 return하는 비동기 코드
const func3 = () => setTimeout(() => console.log('3'), 2000);
/*
결과 :
1
2
3
*/
func3();
func1();
func2();
// 각각의 함수들을 정의
const func1 = () => console.log('1');
const func2 = () => console.log('2');
// setTimeOut를 return하는 비동기 코드
const func3 = () => setTimeout(() => console.log('3'), 0);
/*
결과 :
1
2
3
*/
func3();
func1();
func2();
🔥 마지막에 나와있는 코드에는 setTimeout의 타이머가 0으로 되어있어도 나중에 출력된다. 함수 자체가 비동기로 작동하기 때문이다.