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 in node.js integrierte Methode setTimeout(callback, delayMillSeconds, [args]) verwenden . Wenn setTime() aufgerufen wird, wird die Rückruffunktion
ausgeführt, nachdem „delayMillSeconds“ eine Timer-Objekt-ID zurückgibt, die abgebrochen werden kann, indem die ID an „clearTimeout“ (timeoutId) übergeben wird, bevor „delayMillSeconds“ abläuft.
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);“ kommentieren, 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 Arbeiten in regelmäßigen Abständen 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, die alle 1 Sekunden ausgeführt wird das Intervall Der Timer wird abgebrochen.
"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. Brechen Sie die Timer-Referenz aus der Ereignisschleife ab
Wenn in der Ereigniswarteschlange nur Timer-Callback-Funktionen vorhanden sind, wenn Sie diese nicht ausführen möchten Darüber hinaus 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 umfangreiche 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 nicht präzise
Sie fügen in einem bestimmten Intervall Rückrufe zur Ereigniswarteschlange hinzu und die Ausführung ist auch nicht zu 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 sind unterschiedlich.
"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 es für alle hilfreich ist, zu lernen, wie man setTimeout und setInterval in Node.js verwendet.
Weitere verwandte Artikel zum schnellen Beherrschen von setTimeout und setInterval in Node.js finden Sie auf der chinesischen PHP-Website!