Node

[Node.js] Node.js의 Timer 메서드에 대하여 알아보기

YaluStar 2023. 2. 3. 00:51

안녕하세요.

이번에는 Node.js의 TImer 메서드에 대하여 알아보겠습니다.

 

 

1. Timer 메소드

  • setTimeout( 콜백 함수, 밀리초 )
  • setInterval( 콜백 함수, 밀리초 )
  • setImmediate( 콜백 함수 )
  • clearTimeout( 아이디 )
  • clearInterval( 아이디 )
  • clearImmediate( 아이디 )

 

setTimeout 함수

  • 다음과 같이 코드를 실행하면 바로 실행이 되지 않고, 설정한 밀리초 이후에 코드가 실행이 됩니다.
setTimeout(function() {
    console.log("1.5초 후 실행");
}, 1500);

// 위 함수와 동일함, 문법 차이
setTimeout(() => {
    console.log("1.5초 후 실행");
}, 1500);

 

2번째에 적어놓은 함수는 Arrow Function으로 ES6 신문법입니다.

Arrow Function 관련해서는 다른 좋은 글이 많으니 궁금하신 분은 찾아보시기 바랍니다.

관련 페이지 링크

 

Arrow function은 function을 대체하는 신문법이 아님 - 코딩애플 온라인 강좌

0:00 Arrow function 문법 1:17 왜 쓰는지 장점 3개 정리 4:28 Arrow function 실생활 사용 예시 & this값에 대하여 ES6 문법 이후부터는 자바스크립트에서 함수를 만들 수 있는 문법이 새롭게 하나 등장했습니

codingapple.com

 

코드를 실행해 보면 1.5초 후에 실행되는 것을 볼 수 있습니다.

 

작성되어 있는 1번 setTimeout 함수를 분해해서 본다면 2번 코드처럼 작성할 수 도 있습니다.

하지만 1번 코드처럼 사용하면 사용하면 익명 함수라고 해서 1번 사용하고 나면 재사용 할 수 없습니다.

2번 코드 처럼 사용하면 a() 함수는 계속 남아 있어서 다른 방식으로도 사용할 수 있기 때문에 상황에 따라 정해서 사용하시면 됩니다.

// 1번
setTimeout(function() {
    console.log("1.5초 후 실행");
}, 1500);

// 이 함수를 합치면 위에 처럼 사용
// 위에 처럼 사용하면 익명 함수라고 해서 1번 사용하고 끝남
// 아래 처럼 사용하면 a() 함수가 계속 남아 있어서 사용 방법에 따라 다름
// 2번
function a() { console.log('1.5초후 실행'); }
setTimeout( a, 1500);

 

setInterval 함수

  • 설정한 밀리초마다 코드가 반복 실행됩니다.
  • setInterval 함수는 1번 실행 후 주기가 도는 게 아니라 바로 주기가 돈다고 보면 됩니다.
const func1 = setTimeout(function() {
    console.log('1.5초 후 실행');
}, 1500);
const func2 = setInterval(function() {
    console.log('1초마다 실행');
}, 1000);

 

func1은 1.5초 후 실행되고 종료되지만, func2는 1초마다 계속 실행됩니다.

 

setImmediate 함수

  • 함수를 즉시 실행합니다.
const func1 = setTimeout(function() {
    console.log('1.5초 후 실행');
}, 1500);

const func5 = setImmediate(() => {
    console.log('func5 즉시 실행');
});

 

func5는 대기시간 없이 바로 실행되는 것을 볼 수 있습니다.

 

clearTimeout(), clearInterval()

  • 각각 설정해 둔 setTimeout() 함수와, setInterval() 함수를 삭제합니다.
const func1 = setTimeout(function() {
    console.log('1.5초 후 실행');
}, 1500);
const func2 = setInterval(function() {
    console.log('1초마다 실행');
}, 1000);

const func3 = setTimeout(function() {
    console.log('func3 실행');
}, 3000);

setTimeout(() => {
    clearTimeout(func3);
    clearInterval(func2);
}, 2500);

 

먼저 3초 후에 실행되는 func3 함수가 실행이 되지 않았습니다.

2.5초에 실행되는 clearTimeout(func3) 함수가 먼저 실행돼서 초기화시켰기 때문입니다.

그리고 1초마다 실행되던 func2 함수가 2.5초 후에 clearInterval(func2) 함수에 의해 종료된 것을 볼 수 있습니다.

 

clearImmediate( 아이디 )

  • setImmediate로 등록한 함수를 초기화시킵니다.
const func5 = setImmediate(() => {
    console.log('func5 즉시 실행');
});
clearImmediate(func5);

 

실행되었어야 하는 func5 함수가 실행되지 않은 것을 볼 수 있습니다.

 

이상으로 Node.js의 Timer 메서드에 대하여 알아보았습니다.

감사합니다.

 

반응형