Heim  >  Artikel  >  Web-Frontend  >  Beherrschen Sie schnell die Verwendung von setTimeout und setInterval in Node.js

Beherrschen Sie schnell die Verwendung von setTimeout und setInterval in Node.js

高洛峰
高洛峰Original
2017-02-08 15:54:261253Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn