


Detaillierte Erläuterung der Merkmale des asynchronen JS-Single-Threaded-IO-Rückrufs
Die meisten unserer ersten Kontakte mit JavaScript begannen mit js-Skripten in HTML. Allerdings verwenden wir diese scheinbar einfache Sprache seit mehreren Jahren, ohne einige ihrer Prinzipien und Mechanismen zu verstehen B. Schaltfläche, Linkklick, Mausübergabe, Fokuserfassung usw. In diesem Artikel werden hauptsächlich die Merkmale asynchroner JavaScript-Single-Threaded-IO-Rückrufe analysiert. Ich hoffe, dass der von uns zusammengestellte Inhalt Ihnen helfen kann.
In diesem Prozess binden wir eine Event-Callback-Funktion an den Dom, wie zum Beispiel onclick="doCheck()". Dieser Prozess dient dazu, ein Klickereignis für das Dom-Element zu registrieren und eine Event-Callback-Funktion doCheck() zu binden.
Wenn die Maus auf dieses Element klickt, wird ein Ereignis ausgelöst und die Ereignisbindungsfunktion wird sofort ausgeführt und zurückgegeben.
Später, als ich mit jquery in Kontakt kam, eine große Anzahl von
$("#id").click(function(){ alert('点击事件'); });
Ich scheine an diese JQuery-Syntax gewöhnt zu sein, da ich immer mehr schreibe, aber Sie haben bemerkt, dass der vorherige Selektor nur Dom-Knoten auswählt und filtert Klicken Sie dann auf Es handelt sich um eine Ereignisregistrierung, und die darin enthaltene Funktion () {} ist tatsächlich ein Parameter. Der Parameter der Ereignisbindungsfunktion erfordert, dass Sie mit der Syntax von Javascript vertraut sind Objekt in Javascript. Objekte können auf alles auf der Welt verweisen, daher können Objekte viele Attribute, Methoden usw. enthalten.
Da es sich um ein Objekt handelt, kann es als Parameter übergeben werden eine Funktion höherer Ordnung.
Und diese Art von Funktion hat keinen definierten Namen, oder? Natürlich kann man ihr einen Namen geben, und es ist dasselbe, wenn man den Namen übergibt, aber es ist so bedeutungslos, da das Funktionsobjekt hier eigentlich ein formaler Parameter ist, daher sind wir es gewohnt, dieser Funktion keinen Namen zu geben, was oft als anonyme Funktion bezeichnet wird
Als nächstes sprechen wir von $("#id" .click oben, wenn das Click-Ereignis ausgelöst wird, muss die Ereignisbindungsfunktion ausgeführt werden. Und oben hat die direkte Zuweisung der Onclick-Methode auf dem DOM den gleichen Effekt.
Gehen Sie davon aus, dass im Browser mehrere Threads vorhanden sind Können Sie sich das Chaos beim Ausführen des Skripts vorstellen? Thread 1 ist dabei, Element A zu ändern. Wert: Thread zwei hat Element A bereits aus dem DOM-Baum gelöscht . Diese Situation ist nicht schlimm. Entweder schafft es der Browser nicht, die Datenkonsistenz über mehrere Threads hinweg aufrechtzuerhalten, oder die Front-End-Ingenieure pflegen sie selbst, sodass der Browser nur einen Thread zum Betreiben des Doms hat, was viel spart unnötiger Ärger.
setTimeout(function(){ alert('弹出'); },300); while(true){ ........ }
Nein, Es wird nie eine Chance geben, 300 Millisekunden zu warten, da der Browser das Skript im Single-Thread-Modus ausführt.
Sobald sich der Thread im Endlosschleifenmodus befindet und die while-Anweisung ausführt, Ihr setTimeout hat keine Wirkung mehr.
Dann betreten wir die Welt von node.js, die die Verwendung von Javascript vollständig beibehält. Die Funktion des Browsers, der asynchrone Rückruf mit einem Thread, ist genau auf diese Funktion zurückzuführen node.js ist eine synchrone Sprache, auch wenn alle npm-Pakete C++-Erweiterungen sind (es ist schnell genug), egal wie schnell Sie sind. Es ist nicht so schnell wie die C-Sprachverarbeitung, oder? Dann wurde node.js vielleicht schon früher von PHP verachtet Es wurde geboren.
Gerade aufgrund seines asynchronen Callback-IO kann es seine Effizienz verbessern, was mich an den Vergleich zwischen einem Fastfood-Restaurant in der alten Schule und der Schulkantine erinnert:
In der Cafeteria stellten sich alle Schüler mit ihren Tellern in einer Reihe auf, und die Schwester, die den Reis kochte, füllte ihn nacheinander und servierte den Reis nacheinander. Das ist das Ergebnis der Synchronisierung.
Auch in Schul-Fastfood-Restaurants stehen die Schüler Schlange, um zu bestellen, aber nach der Bestellung können Sie Ihren Pager nehmen und sich einen Platz suchen. Auf diese Weise kann der Kellner viele Leute innerhalb einer Zeiteinheit bedienen. Die Leute bieten Service an, und Studenten, die Mahlzeiten bestellt haben, können sich einen Platz suchen, um andere Dinge selbst zu erledigen, anstatt am Fenster zu stehen und auf das Essen zu warten. Sobald Ihre Mahlzeit herauskommt, drückt der Kellner den Code entsprechend der Bestellung Nummer, und dann klingelt der Pager auf dem Tisch und Sie holen sich das Essen. Wenn der Pager ertönt, kann ein einzelner Thread die Verschwendung reduzieren Ressourcen, die durch den Statuswechsel zwischen mehreren Threads verursacht werden, sind schwierig. Natürlich gibt es spezielle Pakete von Drittanbietern, die Multi-Core- und Multi-Thread-Szenarien unterstützen.
Verwandte Empfehlungen:
Single-Threaded setTimeout in JavaScript
Wie die Single-Threaded-Programmiersprache PHP Multithread-Operationen implementiert
Einige ausführliche Einführung in einige Dinge zum JavaScript-Single-Threading (Bilder)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Merkmale des asynchronen JS-Single-Threaded-IO-Rückrufs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das Windows-Betriebssystem ist eines der beliebtesten Betriebssysteme der Welt und seine neue Version Win11 hat viel Aufmerksamkeit erregt. Im Win11-System ist die Erlangung von Administratorrechten ein wichtiger Vorgang. Mit Administratorrechten können Benutzer weitere Vorgänge und Einstellungen auf dem System durchführen. In diesem Artikel wird ausführlich beschrieben, wie Sie Administratorrechte im Win11-System erhalten und wie Sie Berechtigungen effektiv verwalten. Im Win11-System werden Administratorrechte in zwei Typen unterteilt: lokaler Administrator und Domänenadministrator. Ein lokaler Administrator verfügt über vollständige Administratorrechte für den lokalen Computer

Detaillierte Erläuterung der Divisionsoperation in OracleSQL In OracleSQL ist die Divisionsoperation eine häufige und wichtige mathematische Operation, die zur Berechnung des Ergebnisses der Division zweier Zahlen verwendet wird. Division wird häufig in Datenbankabfragen verwendet. Daher ist das Verständnis der Divisionsoperation und ihrer Verwendung in OracleSQL eine der wesentlichen Fähigkeiten für Datenbankentwickler. In diesem Artikel werden die relevanten Kenntnisse über Divisionsoperationen in OracleSQL ausführlich erörtert und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. 1. Divisionsoperation in OracleSQL

Der Modulo-Operator (%) in PHP wird verwendet, um den Rest der Division zweier Zahlen zu ermitteln. In diesem Artikel werden wir die Rolle und Verwendung des Modulo-Operators im Detail besprechen und spezifische Codebeispiele bereitstellen, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle des Modulo-Operators Wenn wir in der Mathematik eine ganze Zahl durch eine andere ganze Zahl dividieren, erhalten wir einen Quotienten und einen Rest. Wenn wir beispielsweise 10 durch 3 dividieren, ist der Quotient 3 und der Rest ist 1. Um diesen Rest zu ermitteln, wird der Modulo-Operator verwendet. 2. Verwendung des Modulo-Operators In PHP verwenden Sie das %-Symbol, um den Modul darzustellen

Detaillierte Erläuterung der Funktion system() des Linux-Systems Der Systemaufruf ist ein sehr wichtiger Teil des Linux-Betriebssystems. Er bietet eine Möglichkeit, mit dem Systemkernel zu interagieren. Unter diesen ist die Funktion system() eine der am häufigsten verwendeten Systemaufruffunktionen. In diesem Artikel wird die Verwendung der Funktion system() ausführlich vorgestellt und entsprechende Codebeispiele bereitgestellt. Grundlegende Konzepte von Systemaufrufen Systemaufrufe sind eine Möglichkeit für Benutzerprogramme, mit dem Betriebssystemkernel zu interagieren. Benutzerprogramme fordern das Betriebssystem an, indem sie Systemaufruffunktionen aufrufen

Detaillierte Erläuterung des Linux-Befehls „curl“ Zusammenfassung: Curl ist ein leistungsstarkes Befehlszeilentool für die Datenkommunikation mit dem Server. In diesem Artikel wird die grundlegende Verwendung des Curl-Befehls vorgestellt und tatsächliche Codebeispiele bereitgestellt, um den Lesern zu helfen, den Befehl besser zu verstehen und anzuwenden. 1. Was ist Locken? Curl ist ein Befehlszeilentool zum Senden und Empfangen verschiedener Netzwerkanfragen. Es unterstützt mehrere Protokolle wie HTTP, FTP, TELNET usw. und bietet umfangreiche Funktionen wie Datei-Upload, Datei-Download, Datenübertragung und Proxy

Eine detaillierte Erklärung von Promise.resolve() erfordert spezifische Codebeispiele. Promise ist ein Mechanismus in JavaScript zur Verarbeitung asynchroner Vorgänge. In der tatsächlichen Entwicklung ist es häufig erforderlich, einige asynchrone Aufgaben zu verarbeiten, die nacheinander ausgeführt werden müssen, und die Methode Promise.resolve () wird verwendet, um ein erfülltes Promise-Objekt zurückzugeben. Promise.resolve() ist eine statische Methode der Promise-Klasse, die a akzeptiert

In Golang (Go-Sprache) gibt es kein Konzept einer Klasse im herkömmlichen Sinne, es stellt jedoch einen Datentyp namens Struktur bereit, durch den objektorientierte Funktionen ähnlich wie Klassen erreicht werden können. In diesem Artikel erklären wir, wie Strukturen zur Implementierung objektorientierter Funktionen verwendet werden, und stellen konkrete Codebeispiele bereit. Definition und Verwendung von Strukturen Werfen wir zunächst einen Blick auf die Definition und Verwendung von Strukturen. In Golang können Strukturen über das Schlüsselwort type definiert und dann bei Bedarf verwendet werden. Strukturen können Attribute enthalten

C++-Funktionen haben die folgenden Typen: einfache Funktionen, konstante Funktionen, statische Funktionen und virtuelle Funktionen; zu den Funktionen gehören: Inline-Funktionen, Standardparameter, Referenzrückgaben und überladene Funktionen. Beispielsweise verwendet die Funktion „calculeArea“ π, um die Fläche eines Kreises mit einem bestimmten Radius zu berechnen und gibt sie als Ausgabe zurück.
