JS와 마찬가지로 Node.js에도 타이머, 타임아웃 타이머, 간격 타이머, 적시 타이머 및 이벤트 예약을 구현하는 process.nextTick(콜백) 함수가 있습니다. 오늘은 setTimeout과 setInterval의 사용법을 배워보겠습니다.
1. setTimeout 타임아웃 타이머(GCD 이후와 유사)
node.js에서는 node.js에 내장된 setTimeout(callback, DelayMillSeconds, [args]) 메서드를 사용할 수 있습니다. setTime()을 호출할 때 콜백 함수는 DelayMillSeconds
이후에 발생합니다..setTime()을 실행하면 타이머 객체 ID가 반환됩니다. 이 ID는 DelayMillSeconds가 만료되기 전에 ClearTimeout(timeoutId)에 ID를 전달하여 취소할 수 있습니다.
function myfunc(){ console.log("myfunc"); }; var mytimeout=setTimeout(myfunc,1000); clearTimeout(mytimeout);
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js Process finished with exit code 0
clearTimeout(mytimeout); 줄을 주석 처리하면 myfunc()이 실행되는 것을 볼 수 있습니다.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js myfunc Process finished with exit code 0
2. setInterval 간격 타이머 (GCD의 dispatch_source_t 또는 NSTimer와 유사)
간격 타이머는 일정한 간격으로 작업을 수행하는 데 사용됩니다. setTimeout과 유사하게 node.js에는 타이머 객체 ID를 생성하고 반환하는 setInterval(callback, DelayMilliSecond, [args])이 내장되어 있으며, clearInterval( ) .
/** * Created by Administrator on 2016/3/11. */ function myfunc(Interval){ console.log("myfunc "+Interval); } var myInterval=setInterval(myfunc,1000,"Interval"); function stopInterval(){ clearTimeout(myInterval); //myInterval.unref(); } setTimeout(stopInterval,5000);
위 코드는 setInterval의 콜백 함수를 생성하는 것입니다. 매개변수는 Interval이며, 1초마다 setTimeout이 실행됩니다. 해당 콜백 함수는 간격 타이머를 취소합니다.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Interval.js myfunc Interval myfunc Interval myfunc Interval myfunc Interval Process finished with exit code 0
3. 이벤트 루프에서 타이머 참조 취소
이벤트 큐에 타이머 콜백 함수만 있는 경우 더 이상 실행하고 싶지 않다면 setInterval 및 setTimeout에서 반환된 객체의 unref() 함수를 사용하여 이벤트 루프가 계속되지 않도록 알릴 수 있습니다.
unref()를 setTimeout과 함께 사용하는 경우 이벤트 루프를 깨우기 위해 독립 타이머를 사용해야 합니다. 과도한 사용도 성능에 영향을 미치므로 가능한 한 적게 사용하십시오.
4. setTimeout 및 setInterval의 실행 시간이 정확하지 않습니다
특정 간격으로 이벤트 큐에 콜백을 추가하고 실행이 그다지 정확하지 않습니다
function simpleTimeout(consoleTime) { console.timeEnd(consoleTime); } console.time("twoSecond"); setTimeout(simpleTimeout,2000,"twoSecond"); console.time("oneSecond"); setTimeout(simpleTimeout,1000,"oneSecond"); console.time("fiveSecond"); setTimeout(simpleTimeout,5000,"fiveSecond"); console.time("50MillSecond"); setTimeout(simpleTimeout,50,"50MillSecond");
위 코드를 여러 번 실행하면 출력 결과가 달라집니다.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js 50MillSecond: 51ms oneSecond: 1000ms twoSecond: 2002ms fiveSecond: 5001ms Process finished with exit code 0
위 내용은 이 기사의 전체 내용입니다. Node.js에서 setTimeout 및 setInterval을 사용하는 방법을 배우는 데 도움이 되기를 바랍니다.