javascript / expert
Snippet
Event Loop: Microtask-Warteschlangen-Aushungerung
In Node.js werden Microtasks (process.nextTick und Promises) sofort nach der aktuellen Operation und bevor die Ereignisschleife mit der nächsten Phase fortfährt, verarbeitet. Der rekursive Aufruf von process.nextTick erzeugt eine Endlosschleife von Microtasks, die die Ereignisschleife 'aushungert' und verhindert, dass I/O-Vorgänge oder Timer jemals ausgeführt werden.
snippet.js
1
2
3
4
5
6
7
8
9
const recursiveTick = () => {process.nextTick(recursiveTick);};setImmediate(() => {console.log('This will never run');});recursiveTick();
nodejs
Erklärung
1
process.nextTick(recursiveTick);
Plant die Funktion für die Microtask-Warteschlange ein, die vor der nächsten Phase der Ereignisschleife vollständig geleert wird.
2
setImmediate(() => { ... });
Plant einen Callback in der 'Check'-Phase der Ereignisschleife ein, der durch die unendliche Microtask-Schleife blockiert wird.