Dies passiert, weil, wenn Sie eine function
innerhalb von setTimeout
übergeben und es aufrufen, wird die übergebene Funktion in die callBack
Warteschlange basierend auf der gelieferten Verzögerung in Millisekunden geschoben. Die Funktionen innerhalb der CallBack-Warteschlange werden nacheinander in der Reihenfolge ausgeführt, in der sie gedrängt wurden. In diesem Fall blockieren Sie den Codefluss function
, der in der Warteschlange callBack
vorhanden ist, indem Sie eine while
-Schleife ausführen. Daher dauert der zweite Aufruf von test
10 Sekunden zur Ausführung.
Hinweis: Die Rückrufwarteschlange startet ihre Ausführung, wenn im Aufrufstapel nichts ausgeführt wird.
Am besten lesen Sie hierzu, Event Loop.
JavaScript ist nicht "multi-threaded"; Die Funktionen werden seriell und nicht parallel ausgeführt. –