Node.js의 setTimeout
과 process.nextTick
차이점
1. setTimeout
이란?
setTimeout
은 지정된 시간(밀리초) 후에 콜백 함수를 실행하는 Node.js 메서드입니다.
특징:
- 이벤트 루프의 타이머 단계에서 실행됩니다.
- 최소 지연 시간이 설정되며, 실제 실행 시간은 이벤트 루프 상태에 따라 달라질 수 있습니다.
예제:
console.log('Before setTimeout');
setTimeout(() => {
console.log('Inside setTimeout');
}, 0);
console.log('After setTimeout');
출력:
Before setTimeout
After setTimeout
Inside setTimeout
2. process.nextTick
이란?
process.nextTick
은 현재 실행 중인 작업이 완료된 직후, 이벤트 루프가 다른 작업을 처리하기 전에 콜백을 실행합니다.
특징:
- 이벤트 루프의 마이크로태스크 큐에서 실행됩니다.
setTimeout
보다 우선적으로 실행됩니다.
예제:
console.log('Before nextTick');
process.nextTick(() => {
console.log('Inside nextTick');
});
console.log('After nextTick');
출력:
Before nextTick
After nextTick
Inside nextTick
3. setTimeout
vs process.nextTick
비교
특징 |
setTimeout |
process.nextTick |
실행 위치 |
이벤트 루프의 타이머 단계에서 실행 |
현재 작업 완료 후 바로 실행 |
우선순위 |
낮음 |
높음 |
주요 사용 사례 |
특정 시간 지연 후 실행 |
현재 작업 이후 즉시 실행 |
실행 순서 |
process.nextTick 이후 실행 |
항상 setTimeout 보다 먼저 실행 |
4. 함께 사용한 예제
코드:
console.log('Start');
setTimeout(() => {
console.log('setTimeout callback');
}, 0);
process.nextTick(() => {
console.log('nextTick callback');
});
console.log('End');
출력:
Start
End
nextTick callback
setTimeout callback
5. 주의사항
process.nextTick
은 이벤트 루프를 빠져나가지 않고 계속 작업을 예약할 수 있으므로 과도하게 사용하면 이벤트 루프를 차단하여 성능 문제를 유발할 수 있습니다.
setTimeout
은 비동기 작업의 지연을 명시적으로 설정하는 데 적합합니다.