Heim Web-Frontend js-Tutorial Was ist JavaScript asynchron?

Was ist JavaScript asynchron?

Dec 02, 2017 am 09:05 AM
javascript js 异步

Als unerfahrene Programmierer stoßen wir oft auf einige sehr einfache Probleme, aber wir wissen nicht, was vor sich geht. Sie möchten beispielsweise Daten aus dem Hintergrund aufrufen und auf der Startseite anzeigen, aber das Ausgabeergebnis ist immer so leer. undefiniert, keine Daten verfügbar. Was ist der Grund dafür? Nachdem ich nach Informationen aus verschiedenen Quellen gesucht hatte, stellte ich fest, dass ich in die „Grube“ von JS Asynchronous geraten war. Richtig, in diesem Artikel teilen wir Ihnen hauptsächlich den asynchronen Betrieb von JS mit.

Wir hören oft die Konzepte Single-Threaded, Multi-Threaded, synchronisiert und asynchron. Was genau sind das also?
Dann beginnen wir mit den oben genannten Konzepten

Grundlegendes Verständnis von Single-Threaded, Multi-Threaded, synchronisiert und asynchron

Jedes laufende Programm (d. h. Prozess) Es gibt mindestens ein Thread, der als Hauptthread bezeichnet wird. Der Hauptthread wird beim Start des Programms erstellt und dient zur Ausführung der Hauptfunktion.

1. Ein einzelner Thread ist ein Thread mit nur einem Hauptthread. Der Code wird sequentiell von oben nach unten ausgeführt. Der Hauptthread ist für die Ausführung des gesamten Codes des Programms verantwortlich (Anzeige und Aktualisierung der Benutzeroberfläche, Netzwerkanforderungen). , lokaler Speicher usw.) [Ein Thread, bei dem ich mich ein wenig müde fühle, wenn ich nur an all die Dinge denke, die ich tun muss]

2. Multithreading ist, wie der Name schon sagt, ein Programm mit mehrere Threads, die vom Benutzer erstellt werden können. Mehrere von Benutzern unabhängig voneinander erstellte Prozesse sind relativ zum Hauptthread untergeordnete Threads. Der untergeordnete Thread und der Hauptthread sind unabhängige laufende Einheiten, und ihre jeweiligen Ausführungen beeinflussen sich nicht gegenseitig, sodass sie gleichzeitig ausgeführt werden können.

Fühlst du dich ein wenig schwindelig, wenn du dir nur diese trockenen Theorien anhörst? Zufälligerweise war mir auch schwindelig, als ich es zum ersten Mal sah.

Bei der Suche nach Informationen bin ich auf eine so anschauliche Metapher von anderen gestoßen.

Single-Threading bedeutet beispielsweise, dass Sie in die Küche gehen, um zu kochen und zu kochen, und eine Person läuft hin und her; Multi-Threading bedeutet, dass es zwei Personen gibt, eine allein kochend und die andere kochend.

Das sollte das Verständnis erleichtern, oder?

Und was ist synchron und asynchron?

Lassen Sie uns zur Veranschaulichung ein einfaches Beispiel aus dem Leben verwenden.

Sie rufen an, um ein Hotel zu buchen, und fragen das Personal, ob ein Zimmer verfügbar ist. Zu diesem Zeitpunkt muss das Personal prüfen, ob ein Zimmer verfügbar ist, bevor es Ihnen antworten kann.

Synchronisation bedeutet, nicht den Hörer aufzulegen und zu warten, bis das Personal Ihnen sagt, ob ein Zimmer frei ist.
Asynchron bedeutet, dass Sie den Hörer auflegen, andere Dinge wie Essen und Trinken erledigen und das Personal Sie anruft, nachdem es die Informationen gefunden hat.

Hier kommt also unser Thema

Was ist der asynchrone Betrieb von JS?

Die Ausführungsumgebung von JS ist Single-Threaded, das heißt, das Programm wird sequentiell ausgeführt und kann jeweils nur eine Aufgabe ausführen. Wenn das Programm weiter ausgeführt werden soll, muss es warten Es spielt keine Rolle, wie lange die Ausführung der aktuellen Aufgabe dauert (wenn das nachfolgende Programm schnell ausgeführt wird, wird es wirklich unangenehm sein, zu warten).

Um das unangenehme Blockierungsproblem nachfolgender Programme zu lösen. JavaScript verfügt über einen asynchronen Verarbeitungsmodus, bei dem es sich tatsächlich um eine verzögerte Verarbeitung handelt.

Lassen Sie uns zur Veranschaulichung ein Beispiel geben.

var getUserInfo = function () {
      $.getJSON("http://www.easy-mock.com/mock/5a09868228b23066479b8379/ajaxData/getUserInfo", function () {
        return data;
      });
    }
    var data = getUserInfo();
    renderUserInfo(data)
Nach dem Login kopieren

Das Abrufen von Daten aus dem Hintergrund kann viel Zeit in Anspruch nehmen. Daher muss renderUserInfo warten, bis die Daten abgerufen werden, bevor es ausgeführt werden kann. Glücklicherweise verfügt JS über asynchrone Vorgänge. Beim Abrufen von Daten müssen Sie nicht darauf warten, dass renderUserInfo die Daten abruft, sondern sie direkt ausführen.

In diesem Fall werden diese beiden Funktionen in welcher Reihenfolge ausgeführt? Keine Sorge, lassen Sie es uns debuggen:

var getUserInfo = function () {
      console.log('aaa');
      $.getJSON("http://www.easy-mock.com/mock/5a09868228b23066479b8379/ajaxData/getUserInfo", function () {
        console.log('bbb');
        return data;
      });
    }
    var data = getUserInfo();
    console.log(data);
    console.log('ccc');
    renderUserInfo(data);
Nach dem Login kopieren

Die Ausgabe der sequentiellen Ausführung sollte ursprünglich „aaa“, „bbb“, „ccc“ sein, oder?

Allerdings sind die Dinge nicht so einfach. Werfen wir einen Blick auf die Konsolenausgabe:

Die Ausgabeergebnisse sind nicht sequentiell.

Das heißt, wenn die Funktion zum Abrufen von Daten durch getJSON ausgeführt wird, wartet das Programm nicht darauf, dass es die Daten abruft, bevor es den nächsten Schritt ausführt, sondern überspringt stattdessen die Phase des Datenabrufs und führt die Ausgabedaten direkt aus. Daher sind auch die Daten leer.

Dies ist der asynchrone Mechanismus von JS.

Der obige Inhalt ist eine detaillierte Erklärung von asynchronem JavaScript. Ich hoffe, er kann jedem helfen.

Verwandte Empfehlungen:

JS-asynchrone Methode zur Implementierung des Generators

JS-asynchrone Lademethode

Detaillierte Erklärung des asynchronen js-Dateiladers

Das obige ist der detaillierte Inhalt vonWas ist JavaScript asynchron?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Apr 03, 2024 am 11:55 AM

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Dec 17, 2023 pm 06:55 PM

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen in PHP und JS. Mit der rasanten Entwicklung des Internets und der Technologie ist der Aktienhandel für viele Anleger zu einer wichtigen Möglichkeit geworden. Die Aktienanalyse ist ein wichtiger Teil der Anlegerentscheidung, und Kerzendiagramme werden häufig in der technischen Analyse verwendet. Wenn Sie lernen, wie man Kerzendiagramme mit PHP und JS zeichnet, erhalten Anleger intuitivere Informationen, die ihnen helfen, bessere Entscheidungen zu treffen. Ein Candlestick-Chart ist ein technischer Chart, der Aktienkurse in Form von Candlesticks anzeigt. Es zeigt den Aktienkurs

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen Dec 18, 2023 pm 03:39 PM

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

Die Beziehung zwischen js und vue Die Beziehung zwischen js und vue Mar 11, 2024 pm 05:21 PM

Die Beziehung zwischen js und vue: 1. JS als Eckpfeiler der Webentwicklung; 2. Der Aufstieg von Vue.js als Front-End-Framework; 3. Die komplementäre Beziehung zwischen JS und Vue; Vue.

Erweiterter Leitfaden zu Python Asyncio: Vom Anfänger zum Experten Erweiterter Leitfaden zu Python Asyncio: Vom Anfänger zum Experten Mar 04, 2024 am 09:43 AM

Gleichzeitige und asynchrone Programmierung Bei der gleichzeitigen Programmierung geht es um die gleichzeitige Ausführung mehrerer Aufgaben. Bei der asynchronen Programmierung handelt es sich um eine Art der gleichzeitigen Programmierung, bei der Aufgaben keine Threads blockieren. asyncio ist eine Bibliothek für die asynchrone Programmierung in Python, die es Programmen ermöglicht, I/O-Vorgänge auszuführen, ohne den Hauptthread zu blockieren. Ereignisschleife Der Kern von Asyncio ist die Ereignisschleife, die I/O-Ereignisse überwacht und entsprechende Aufgaben plant. Wenn eine Coroutine bereit ist, wird sie von der Ereignisschleife ausgeführt, bis sie auf E/A-Operationen wartet. Anschließend wird die Coroutine angehalten und die Ausführung anderer Coroutinen fortgesetzt. Coroutinen Coroutinen sind Funktionen, die die Ausführung anhalten und fortsetzen können. Das Schlüsselwort asyncdef wird zum Erstellen von Coroutinen verwendet. Die Coroutine verwendet das Schlüsselwort „await“, um auf den Abschluss des E/A-Vorgangs zu warten. Die folgenden Grundlagen von Asyncio

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

Asynchrone und nicht blockierende Technologie in der Java-Ausnahmebehandlung Asynchrone und nicht blockierende Technologie in der Java-Ausnahmebehandlung May 01, 2024 pm 05:42 PM

Asynchrone und nicht blockierende Techniken können als Ergänzung zur herkömmlichen Ausnahmebehandlung verwendet werden und ermöglichen die Erstellung reaktionsschnellerer und effizienterer Java-Anwendungen: Asynchrone Ausnahmebehandlung: Behandlung von Ausnahmen in einem anderen Thread oder Prozess, sodass der Hauptthread weiter ausgeführt werden kann und Blockierungen vermieden werden. Nicht blockierende Ausnahmebehandlung: Beinhaltet eine ereignisgesteuerte Ausnahmebehandlung, wenn ein E/A-Vorgang fehlschlägt, wodurch das Blockieren von Threads vermieden wird und die Ereignisschleife die Behandlung von Ausnahmen ermöglicht.

See all articles