-
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함수가 실행 될 것이다.
'개발언어 > 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