[개발] Node.js

[node.js] Node.js의 setTimeout과 nextTick 비교, 차이점

  • -
반응형

 

Node.js의 setTimeoutprocess.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은 비동기 작업의 지연을 명시적으로 설정하는 데 적합합니다.

Node.js에서 비동기 작업을 예약할 때 setTimeoutprocess.nextTick의 차이를 이해하고 적절히 사용해 보세요!

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.