Skip to content

process.nextTick() verstehen

Wenn man versucht, die Node.js-Event-Schleife zu verstehen, ist process.nextTick() ein wichtiger Bestandteil davon. Jedes Mal, wenn die Event-Schleife eine vollständige Runde durchläuft, nennen wir das einen Tick.

Wenn wir eine Funktion an process.nextTick() übergeben, weisen wir die Engine an, diese Funktion am Ende der aktuellen Operation aufzurufen, bevor der nächste Event-Schleifen-Tick beginnt:

js
process.nextTick(() => {
  // Mache etwas
})

Die Event-Schleife ist damit beschäftigt, den aktuellen Funktionscode zu verarbeiten. Wenn diese Operation endet, führt die JS-Engine alle Funktionen aus, die während dieser Operation an nextTick-Aufrufe übergeben wurden.

Es ist die Art, wie wir der JS-Engine mitteilen können, eine Funktion asynchron (nach der aktuellen Funktion) zu verarbeiten, aber so schnell wie möglich, und sie nicht in die Warteschlange zu stellen.

Der Aufruf von setTimeout(() => {}, 0) führt die Funktion am Ende des nächsten Ticks aus, viel später als bei Verwendung von nextTick(), das den Aufruf priorisiert und ihn kurz vor Beginn des nächsten Ticks ausführt.

Verwenden Sie nextTick(), wenn Sie sicherstellen möchten, dass in der nächsten Event-Schleifen-Iteration dieser Code bereits ausgeführt wird.

Ein Beispiel für die Reihenfolge der Ereignisse:

js
console.log('Hallo => Nummer 1')
setImmediate(() => {
  console.log('Wird vor dem Timeout ausgeführt => Nummer 3')
})
setTimeout(() => {
  console.log('Das Timeout wird zuletzt ausgeführt => Nummer 4')
}, 0)
process.nextTick(() => {
  console.log('Wird beim nächsten Tick ausgeführt => Nummer 2')
})

Beispielausgabe:

bash
Hallo => Nummer 1
Wird beim nächsten Tick ausgeführt => Nummer 2
Wird vor dem Timeout ausgeführt => Nummer 3
Das Timeout wird zuletzt ausgeführt => Nummer 4

Die genaue Ausgabe kann von Ausführung zu Ausführung unterschiedlich sein.