Heim  >  Artikel  >  Web-Frontend  >  Sprechen Sie kurz über die Synchronisation und Asynchronität von JavaScript_Javascript-Fähigkeiten

Sprechen Sie kurz über die Synchronisation und Asynchronität von JavaScript_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:22:361155Durchsuche

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…

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn