Node.js にも、js と同様に、イベント スケジューリングを実装するためのタイマー、タイムアウト タイマー、インターバル タイマー、タイムリー タイマー、および process.nextTick(callback) 関数があります。今日は、setTimeout と setInterval の使用方法を学びましょう。
1. setTimeout タイムアウト タイマー (GCD の after と同様)
node.js では、node.js 組み込みの setTimeout(callback, lateMillSeconds, [args]) メソッドを使用できます。 setTime() を呼び出すと、コールバック関数は遅延MillSeconds
の後に行われます。.setTime() を実行するとタイマー オブジェクト ID が返されます。これは、layMillSeconds の有効期限が切れる前に、その ID をclearTimeout(timeoutId) に渡すことでキャンセルできます。
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 と同様に、タイマー オブジェクト ID を作成して返し、clearInterval( を通じてキャンセルする) 組み込みの setInterval(callback, lateMilliSecond, [args]) を使用します。 )。
/** * 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 のコールバック関数 myfunc を作成するもので、setInterval は 1 秒ごとに実行され、そのコールバック関数はインターバル タイマーをキャンセルします。
"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 を使用する方法を学ぶのに役立つことを願っています。