Heim > Web-Frontend > js-Tutorial > Hauptteil

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

WBOY
Freigeben: 2016-05-16 15:09:56
Original
1485 Leute haben es durchsucht

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);
Nach dem Login kopieren
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js

Process finished with exit code 0
Nach dem Login kopieren

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
Nach dem Login kopieren

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);

Nach dem Login kopieren

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
Nach dem Login kopieren

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");

Nach dem Login kopieren

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
Nach dem Login kopieren

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage