1. Zeichnen Sie zur Veranschaulichung ein Bild von Hand.
2. Warum JavaScript Single-Threaded ist (hier ist ein Zitat von Lehrer Ruan Yifeng)
Der einzelne Thread von JavaScript hängt mit seinem Zweck zusammen.
Als Browser-Skriptsprache besteht der Hauptzweck von JavaScript darin, mit Benutzern zu interagieren und das DOM zu manipulieren.
Dadurch wird festgelegt, dass es nur Single-Threaded sein kann, da es sonst zu sehr komplexen Synchronisationsproblemen kommt.
Angenommen, JavaScript verfügt über zwei Threads gleichzeitig. Ein Thread fügt einem bestimmten DOM-Knoten Inhalte hinzu und der andere Thread löscht den Knoten. Welchen Thread sollte der Browser in diesem Fall verwenden?
Um Komplexität zu vermeiden, ist JavaScript seit seiner Geburt Single-Threaded. Dies ist zum Kernmerkmal dieser Sprache geworden und wird sich auch in Zukunft nicht ändern.
Um die Rechenleistung von Multi-Core-CPUs zu nutzen, schlägt HTML5 den Web Worker-Standard vor, der es JavaScript-Skripten ermöglicht, mehrere Threads zu erstellen, die untergeordneten Threads werden jedoch vollständig vom Haupt-Thread gesteuert und dürfen den nicht bedienen DOM.
Dieser neue Standard ändert also nichts an der Single-Threaded-Natur von JavaScript.
Portal: Detaillierte Erläuterung der Ereignisschleife (Event Loop) des JavaScript-Betriebsmechanismus
3. Wo ist die asynchrone Implementierung von JavaScript
Wie im Bild zu Beginn gezeigt, denke ich persönlich, dass der Hauptthread links synchron und die Ereigniswarteschlange (Nachrichtenwarteschlange) links asynchron ist.
Natürlich gibt es in JavaScript viele Asyncs:
Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeout/setInterval CSS3 Transition/Animation postMessage Web Workers Web Sockets and more…