Nachdem ich viel über NodeJS Ereignisschleife gelesen habe, habe ich noch einen Zweifel.NodeJS Ereignisschleife interne Arbeit
In unserem Code, wenn die NodeJS-Laufzeit einen asynchronen Aufruf findet, wird sie in die Task/Message Queue geschoben, die auf einem Hintergrundthread läuft und V8 unseren weiteren Code im Hauptthread ausführt. Sobald der asynchrone Task beendet ist, überprüft der Knoten den Aufruf-Stack auf leer. Wenn der Aufrufstapel leer ist, dann bringt nur der Knoten diesen Callback zur Verarbeitung zum Hauptthread. Andernfalls muss gewartet werden, bis der Aufrufstapel leer ist.
Bis zu diesem Punkt nehme ich an, ich bin richtig.
Zweifel: Wenn die asynchrone Task beendet ist und der Aufrufstapel nicht leer ist, muss der Callback warten, bis der Aufrufstapel leer ist. Angenommen, es gibt so viele Aufrufe in meinem Aufruf-Stack, die oft dauern (weniger als async-Task zu beenden) und asynchrone Task früher beendet wurde, dann ist es unnötig zu warten, bis der Call-Stack leer wird.
Hat Knoten auf diese Weise nur so entworfen, dass der Callback warten muss, bis der Aufrufstapel leer wird?