ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NodeJS Timer와 Call Stack의 연관
    개발언어/Node.js 2022. 7. 9. 17:27

    Timer

    timer는 Call Stack과 Task Queue를 넘 나들 수 있다. timer는 global객체에 정의 되어 있기 때문에 따로 import를 하지는 않아도 괜찮다.

    setInterval()이라는 함수를 이용해서 일정한 간격별로 특정한 일을 수행할 수 있도록 한다. 즉 setInterval()에 전달하는 callback함수는 1초단위로 수행이된다.  실행 결과를 보면 1초단위로 숫자가 끊임없이 증가하여 출력되는 것을 확인 할 수있다.

     

    serInterval()함수는 따로 중지 하지 않는 이상 계속 수행이 되므로 이것을 취소 할 수 있어야 한다. 취소하기 위해서는 interval이라는 함수는 인자로  callback함수와 ms를 전달하면, Timer이라는 것을 전달해 준다. 이 Timer 객체를 이용해서 어떤 interval인지 기억을 했다가 취소 할 수 가 있다.

     

    setTimeout(,0) / setImmediate / process.nextTick()

    실행결과 code1,code2,code3이 순서 대로 출력이 되고, 현재 code가 다 완료가 된 다음에 Task Queue에 들어온 callback 함수들이 출력되었는데, 우선 순위가 가장높은 process.nextTick이 가장먼저 출력된 것을 확인 할 수 있고, 그 다음으로 setTimeout과 setImmediate가 출력되었다 둘은 거의 동일하게 동작하기 때문에 큰 차이는 없다.

     

    timeout이 0일때 얼마나 시간이 소요될까?

    setTimeout의 인자로 0초를 넣는것은 setImmediate와 비슷하지만 실제로 callback 함수가 실행되기 위해서는 실제로 Call Stack이 비워질 때 까지 기다려야 하므로 사실 0초 보다는 더 많은 시간이 걸리는 것이다. 덮붙여 단순 console.log를 출력하는 것 보다 더 길고 복잡한 코드가 먼저 수행되야 한다면 11.06ms보다 더 시간이 걸린 후에야 callback함수가 실행 될 것이다.

     

    [출처 -https://academy.dream-coding.com/courses/node ]

    '개발언어 > Node.js' 카테고리의 다른 글

    NodeJS File async와 asynchronous 그리고 promise  (0) 2022.07.28
    NodeJS Path 그리고 유의할 점  (0) 2022.07.27
    NodeJS Process 정보  (0) 2022.07.09
    Node.js-Event-Driven  (0) 2022.07.09
    NodeJS 4가지 특징  (0) 2022.07.09

    댓글

Designed by Tistory.