1. Das Problem bei der Verwendung von Timern im Knoten besteht darin, dass setTimeout() beispielsweise die Ausführung einer Aufgabe nach 10 ms festlegt, nach 9 ms jedoch 5 ms in Anspruch nimmt erneut umdrehen, wurde um 4 ms verzögert.
Okay, das ist alles über den Timer im Knoten.
2. Schauen Sie sich den Code an:
Anhand dieses Beispiels kann meiner Meinung nach jeder klar erkennen, wofür nextTick() verwendet wird. Es wird hauptsächlich für die asynchrone Ausführung verwendet.
Sehen Sie sich den Code an:
Wir haben festgestellt, dass setImmediate auch asynchron ausgeführt wird. Es ist seltsam
Was ist also der Unterschied zwischen it und nextTick()?
Sehen Sie sich den Code an:
Code 1:
Ergebnis:
Code 2:
Ergebnis:
Ich habe festgestellt, dass das Ausführungsergebnis dasselbe ist, obwohl die Reihenfolge der Codes unterschiedlich ist.
Es kann aus den Ergebnissen gefunden werden:
Die Ausführungspriorität der Callback-Funktion von nextTick() ist höher als die von setImmediate();
process.nextTick() gehört zum Leerlaufbeobachter und setImmediate() gehört zum Prüfbeobachter. In jeder Runde der Schleifeninspektion geht der Leerlaufbeobachter dem E/A-Beobachter und der E/A-Beobachter der Prüfung voraus Beobachter. .
Im Hinblick auf die spezifische Implementierung wird die Rückruffunktion von process.nextTick() in einem Array gespeichert,
Das Ergebnis von setImmediate() wird in der verknüpften Liste gespeichert.
Was das Verhalten betrifft, führt Process.nextTick() in jedem Zyklus alle Callback-Funktionen im Array aus
Und setImmediate() führt in jedem Zyklus eine Rückruffunktion in der verknüpften Liste aus
Aus den Ausführungsergebnissen geht hervor: Wenn die erste Rückruffunktion von setImmediate() ausgeführt wird, wird die zweite nicht sofort ausgeführt, sondern tritt zuerst erneut in den nächsten Zyklus ein, setImmediate(). Der Grund für dieses Design besteht darin, sicherzustellen, dass jede Schleife schnell beendet werden kann und verhindert, dass die CPU zu viel belegt und nachfolgende E/A-Aufrufe blockiert.
Das Obige ist die Information über den Unterschied zwischen dem Timer nextTick() und setImmediate() in node.js. Kennt ihr den Unterschied zwischen ihnen?