Node.js verfügt wie js auch über Timer, Timeout-Timer, Intervall-Timer, zeitgesteuerte Timer und die Funktion „process.nextTick(callback)“ zum Implementieren der Ereignisplanung. Heute lernen wir, wie man setTimeout und setInterval verwendet.
1. setTimeout Timeout-Timer (ähnlich wie after in GCD)
In node.js können Sie die integrierte setTimeout(callback, delayMillSeconds, [args])-Methode von node.js verwenden. Beim Aufruf von setTime() erfolgt die Rückruffunktion nach „delayMillSeconds
“.Durch die Ausführung von .setTime() wird eine Timer-Objekt-ID zurückgegeben, die abgebrochen werden kann, indem die ID vor Ablauf von „delayMillSeconds“ an „clearTimeout(timeoutId)“ übergeben wird.
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
Wenn Sie die Zeile „clearTimeout(mytimeout);“ auskommentieren, können Sie sehen, dass myfunc() ausgeführt wird.
"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 Intervall-Timer (ähnlich wie „dispatch_source_t“ oder „NSTimer“ in GCD)
Der Intervall-Timer wird verwendet, um in regelmäßigen Abständen Arbeiten auszuführen. Node.js verfügt über ein integriertes setInterval(callback, delayMilliSecond, [args]), um die Timer-Objekt-ID zu erstellen und zurückzugeben und sie über clearInterval( abzubrechen. ).
/** * 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);
Der obige Code dient zum Erstellen der Rückruffunktion myfunc von setInterval. Der Parameter setTimeout wird alle 1 Sekunde ausgeführt. Seine Rückruffunktion bricht den Intervall-Timer ab.
"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. Löschen Sie die Timer-Referenz aus der Ereignisschleife
Wenn sich in der Ereigniswarteschlange nur Timer-Rückruffunktionen befinden und Sie diese nicht mehr ausführen möchten, können Sie die Funktion unref() des von setInterval und setTimeout zurückgegebenen Objekts verwenden, um der Ereignisschleife mitzuteilen, dass sie nicht fortgesetzt werden soll.
Wenn unref() in Kombination mit setTimeout verwendet wird, muss ein unabhängiger Timer verwendet werden, um die Ereignisschleife zu aktivieren. Eine übermäßige Verwendung wirkt sich auch auf die Leistung aus, also verwenden Sie ihn so wenig wie möglich.
4. Die Ausführungszeit von setTimeout und setInterval ist ungenau
Sie fügen in bestimmten Abständen Rückrufe zur Ereigniswarteschlange hinzu und die Ausführung ist nicht sehr präzise
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");
Die Ausgabeergebnisse der mehrmaligen Ausführung des obigen Codes werden unterschiedlich sein.
"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
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle hilfreich ist, um zu lernen, wie man setTimeout und setInterval in Node.js verwendet.