
EvLoop::timer의 timer_queue에 있는 함수는 다음의 순서로 실행됩니다.
1. setImmediate: setImmediate는 이벤트 루프의 끝에서 실행되기 때문에, 이벤트 루프의 다른 작업이 모두 끝난 후에 실행됩니다.
2. setTimeout: setTimeout은 지정된 시간이 지난 후에 실행됩니다. 만약 setTimeout이 여러 개가 호출된 경우, 가장 먼저 호출된 setTimeout이 가장 먼저 실행됩니다.
3. 동시 호출: 만약 setImmediate와 setTimeout이 동시에 호출된 경우, setImmediate가 먼저 실행됩니다. setTimeout은 지정된 시간이 지난 후에 실행되기 때문에, setImmediate가 먼저 실행된 후에 setTimeout이 실행됩니다.
예를 들어, 다음의 코드를 실행하면 setImmediate가 먼저 실행되고, setTimeout이 1초 후에 실행됩니다.
#hostingforum.kr
javascript
console.log('시작');
setImmediate(() => {
console.log('setImmediate');
});
setTimeout(() => {
console.log('setTimeout');
}, 1000);
만약 setTimeout이 여러 개가 호출된 경우, 가장 먼저 호출된 setTimeout이 가장 먼저 실행됩니다.
#hostingforum.kr
javascript
console.log('시작');
setTimeout(() => {
console.log('setTimeout 1');
}, 1000);
setTimeout(() => {
console.log('setTimeout 2');
}, 2000);
이 경우, setTimeout 1이 1초 후에 실행되고, setTimeout 2가 2초 후에 실행됩니다.
2025-05-02 21:12