Heim  >  Artikel  >  Web-Frontend  >  Gibt es einen Timer in node.js?

Gibt es einen Timer in node.js?

WBOY
WBOYOriginal
2022-07-04 17:28:511858Durchsuche

Es gibt einen Timer in „node.js“; das Timer-Modul in „node.js“ enthält eine Funktion, die den Code für einen bestimmten Zeitraum ausführt. Der Timer muss nicht über require() eingeführt werden, da alle Methoden sind simulierte JavaScript-Funktionen in Browsern, die global sind. Die Timer-Funktion in „node.js“ implementiert eine API, die der von Webbrowsern bereitgestellten Timer-API ähnelt.

Gibt es einen Timer in node.js?

Die Betriebsumgebung dieses Artikels: Windows 10-System, NodeJS-Version 12.19.0, Dell G3-Computer.

Es gibt einen Timer in Node.js

Der Timer in Node.js

Das Timer-Modul in Node.js enthält Funktionen, die in bestimmten Intervallen Code ausführen. Der Timer muss nicht über require() eingeführt werden, da alle diese Methoden JavaScript-Funktionen im Browser simulieren und global sind. Um insgesamt besser zu verstehen, wann diese Funktionen ausgeführt werden, empfiehlt es sich, Event Polling in Node.js zu lesen.

Kontinuität der Zeit mit Node.js steuern

Die API-Funktionen in Node.js bieten mehrere Möglichkeiten, um zu ermöglichen, dass Code zu einem bestimmten Zeitpunkt nach der aktuellen Zeit mit der Ausführung beginnt. Die unten aufgeführten Funktionen sehen ähnlich aus, da sie in den meisten Browsern verfügbar sind. Aber Node.js stellt tatsächlich eine eigene Implementierung bereit. Timer sind sehr eng in das System integriert und obwohl diese APIs Kopien der Funktionen im Browser sind, werden sie dennoch unterschiedlich implementiert.

timer wird verwendet, um den Aufruf einer Funktion zu einem bestimmten Zeitpunkt in der Zukunft zu planen. Die Timer-Funktion in Node.js implementiert eine API ähnlich der vom Webbrowser bereitgestellten Timer-API, verwendet jedoch eine Ereignisschleifenimplementierung .js Es gibt vier verwandte Methoden

setTimeout(callback, delay[, ...args])
setInterval(callback[, ...args])
setImmediate(callback[, ...args])
process.nextTick(callback[, ...args])

Beispiele sind wie folgt:

setTimeout() kann verwendet werden, um eine bestimmte Codeaufgabe nach einem bestimmten Zeitraum auszuführen. Diese Funktion ist der Browser-JavaScript-Funktion window.setTimeout() sehr ähnlich, Sie können jedoch keinen String zur Ausführung übergeben.

setTimeout() akzeptiert eine ausführbare Funktion als ersten Parameter und dann eine Verzögerungszeit in Millisekunden als zweiten Parameter. Die übrigen Parameter können auch als an diese Funktion übergebene Parameter eingebunden werden. Das Folgende ist ein Beispiel:

function myFunc(arg) {
  console.log(`arg was => ${arg}`);
}
setTimeout(myFunc, 1500, 'funky');

Da setTimeout() verwendet wird, wird die obige Funktion myFunc() etwa 1500 Millisekunden (oder 1,5 Sekunden) ausgeführt.

Das eingestellte Zeitintervall kann nicht garantieren, dass der Code jedes Mal in einem präzisen Millisekundenintervall ausgeführt wird. Dies liegt daran, dass anderer Code, der die Ereignisabfrage blockiert oder verarbeitet, die Ausführung dieses Zeitintervalls verzögert. Die einzige Garantie besteht darin, dass der Timer nicht früher als im angegebenen Intervall ausgeführt wird.

setTimeout() gibt ein Timeout-Objekt zurück, über das auf den eingestellten Timer verwiesen werden kann. Das zurückgegebene Objekt kann verwendet werden, um das Timing abzubrechen (siehe clearTimeout() unten) und das Ausführungsverhalten zu ändern (siehe unref() unten).

„Sofort ausführen nach“ setImmediate()

setImmediate() wird am Ende der aktuellen Ereignisabfrage ausgeführt. Dieser Code wird nach allen E/A-Vorgängen in der aktuellen Ereignisabfrage und vor dem nächsten Timerzyklus ausgeführt. Man kann sich die Codeausführung als „unmittelbar danach ausführen“ vorstellen, was bedeutet, dass jeder unmittelbar folgende setImmediate()-Funktionsaufruf vor den setImmediate()-Funktionsparametern ausgeführt wird. Der erste Parameter von

setImmediate() ist die auszuführende Funktion. Bei der Ausführung werden die nachfolgenden Parameter als Parameter an diese Funktion übergeben. Hier ist ein Beispiel:

console.log('before immediate');
setImmediate((arg) => {
  console.log(`executing immediate: ${arg}`);
}, 'so immediate');
console.log('after immediate');

Die oben an setImmediate() übergebene Funktion wird ausgeführt, nachdem jeglicher ausführbare Code ausgeführt wurde. Die Ausgabe lautet also:

before immediate
after immediate
executing immediate: so immediate

setImmediate() gibt ein Immediate-Objekt zurück, das zum Abbrechen von Scheduled verwendet werden kann geplante Aufgaben (siehe clearImmediate() unten).

Hinweis: Verwechseln Sie setImmediate() nicht mit process.nextTick(). Sie weisen einige wesentliche Unterschiede auf: Erstens wird „process.nextTick()“ vor jedem Immediate-Set und vor jedem geplanten E/A ausgeführt. Zweitens ist „process.nextTick()“ nicht löschbar. Sobald Code mit „process.nextTick()“ ausgeführt wird, kann die Ausführung nicht unterbrochen werden. Einzelheiten hierzu finden Sie in diesem Tutorial Erfahren Sie mehr darüber. Verstehen Sie die Funktionsweise von process.nextTick().

Ausführung „Forever polling“ ~ setInterval()

Wenn es eine Funktion gibt, die mehrmals ausgeführt werden muss, kann setInterval() nützlich sein. setInterval() akzeptiert eine Funktion als Parameter, die unendlich oft ausgeführt wird. Der zweite Parameter ist eine angegebene Verzögerung in Millisekunden. Genau wie setTimeout() können danach die restlichen Parameter hinzugefügt und als Argumente verwendet werden, die an den Funktionsaufruf übergeben werden. Ein weiterer Punkt, der setTimeout () ähnelt, besteht darin, dass die Genauigkeit der Verzögerung nicht garantiert werden kann, da einige Vorgänge möglicherweise bei der Ereignisabfrage hängen bleiben, sodass dies als ungefähre Verzögerung betrachtet werden kann. Wie im folgenden Beispiel:

function intervalFunc() {
  console.log('Cant stop me now!');
}
setInterval(intervalFunc, 1500);

Im obigen Beispiel wird IntervalFunc() alle 1500 Millisekunden (oder alle 1,5 Sekunden) ausgeführt, bis es beendet wird.

Wie setTimeout() gibt auch setInterval() ein Timeout-Objekt zurück, auf das verwiesen werden kann und das den eingestellten Timer ändern kann.

Empfohlenes Lernen: „nodejs-Video-Tutorial

Das obige ist der detaillierte Inhalt vonGibt es einen Timer in node.js?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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