it-swarm.dev

Leicht verständliche Definition von "asynchronem Ereignis"?

Ich bin diesem Begriff sehr oft begegnet, und selbst nach dem Googeln kann ich immer noch nicht verstehen, was genau es bedeutet. Gibt es eine leicht verständliche Definition (idealerweise mit Beispielen), was ein asynchrones Ereignis ist, das jemand bereitstellen kann?

Vielen Dank!

88
jasonbogd

Nichtprogrammierendes Beispiel:

Synchron Du willst eine Pizza zum Abendessen und bist aus der Tiefkühlart. Sie müssen also aufhören, WOW zu spielen, was Ihre Gilde aufregt. Du gehst in die Küche, machst den Teig, deckst ihn mit Soße zu, fügst den Käse hinzu und erstickte deinen Lieblingsspeckbelag. Sie haben gerade 20 Minuten Ihrer Zeit damit verbracht, die Pizza zuzubereiten, und weitere 10 Minuten im Ofen. Der Timer piept und Sie ziehen den heißen Kuchen heraus. Sie können sich wieder vor Ihren Computer setzen, die Pizza essen und mit Ihrem Überfall fortfahren.

Asynchron Sie wollen beim WOW eine Pizza zum Abendessen. Sie öffnen ein Browserfenster auf Ihrem 5. Monitor. Sie laden die Pizza-Website auf und bestellen Ihre extra käsige Speckpizza mit einer Seite Speckfett-Knoblauchsauce. Sie gehen zurück zu Ihrem Überfall und nach 20 Minuten klingelt die Türklingel. Sie bekommen die Pizza. Sie setzen sich wieder vor Ihren Computer, essen die Pizza und fahren mit Ihrem Überfall fort. 

Was ist der Unterschied? Auf die eine Weise verschwenden Sie 20 bis 30 Minuten wertvolle WOW-Zeit, auf die andere Weise verschwenden Sie $ 20 plus Trinkgeld. 

423
epascarello

Ihre Seite wird vom Server an einen Client-Browser gesendet, irgendwo im Internet. Der Browser hat die Seite auf einem Bildschirm gezeichnet, und jemand - oder ein Ding- - schaut darauf. Es ist ein Wartespiel. Die Augen bewegen sich hin und her, nehmen dieses oder jenes Detail in schnellen Sprüngen auf und springen ab und zu zur Seite, vom Bildschirm weg, um Ablenkungen in der Umgebung zu untersuchen. Die Uhr tickt. Die Seite leuchtet sanft und passiv, wenn der Benutzer inaktiv bleibt, die Hand lose über eine Maus gehängt, der Hals nach unten gebogen wird und die Augen mehr und mehr auf etwas einladen, das Ihre Seite zu bieten hat.

Plötzlich beginnt sich der Cursor ohne Vorwarnung zu bewegen, während sich die Hand an der Maus leicht versteift und den kleinen Plastikstoß über die rauhe Oberfläche des Tisches stößt. Wenn sich die Maus bewegt, bewegt sich ihr Ersatzbild auf dem Bildschirm in sehr ähnlicher Weise und streift an interessanten Bildern und witzigen Bemerkungen im Inhalt Ihrer Seite vorbei. Schließlich wird eine Entscheidung getroffen, die Bewegung pausiert, ein oder zwei Muskeln ziehen sich leicht zusammen und die Maustaste wird von einem hartnäckigen Finger gedrückt. Der Mikroschalter in der Maus löst einen elektronischen Impuls aus und der Browser wird plötzlich darauf aufmerksam gemacht, was passiert ist: ein Mausklick.

Alles in allem ist alles, was der Benutzer getan hat, während er auf die Seite geschaut hat, auf eine für den Browser völlig unvorhersehbare Weise für jeden Client-Code auf Ihrer Webseite und für alle auf Ihren Servern residierenden Personen geschehen. Es gab keine erkennbare "Wartezeit" zwischen menschlichen Handlungen. Die Aktionen, die von den an den Computer des Benutzers angeschlossenen Geräten übertragen wurden, erfolgten also wenn sie stattfanden und nicht gemäß einer vorhersehbaren Uhr - das heißt, sie fanden asynchron statt.

19
Pointy

Denken Sie an das Ende eines Interviews, und der Typ sagt: "Rufen Sie uns nicht an, wir rufen Sie an". Das ist das Wesentliche eines asynchronen Ereignisses. 

Normalerweise definieren Sie Funktionen und rufen Funktionen explizit auf. Ihr Programm hat eine Struktur, bei der es von Zeile 1 bis Zeile 2 beginnt. Abgesehen von bedingtem Code und Iterationen, aufrufenden Funktionen usw. gibt es eine einfache, lineare, synchrone Struktur.

In einigen Fällen gibt es jedoch Aktionen, die durch Ereignisse außerhalb der direkten Kontrolle des Programms ausgelöst werden, die von außerhalb des Programms stammen, z. B. Ereignisse der Benutzeroberfläche (Benutzer klickt mit der Maus) oder ein Netzwerkereignis (mit dem jemand versucht, eine Verbindung herzustellen Ihr Server). Ihr Code generiert diese Ereignisse nicht direkt. Sie werden außerhalb Ihres Programms generiert, häufig vom Betriebssystem auf der Grundlage der Überwachung von Benutzeroberflächengeräten und anderen Systemen. Dies werden asynchrone Ereignisse genannt.

Denken Sie daran: "Rufen Sie uns nicht an, wir rufen Sie an"

18
Rob Weir

Ein asynchrones Ereignis ist ein Ereignis, das außerhalb des Hauptthreads der Anwendung ausgeführt wird.

Der beste Weg, dies zu verstehen, ist der Vergleich mit synchron laufenden Ereignissen. Das typischste Beispiel wäre das Laden einer Webseite.

Beim Aufrufen dieser Seite haben Sie auf einen Link geklickt und gewartet, bis die Seite geladen wurde. Sie konnten mit dieser Seite nicht interagieren oder sie verwenden, bis sie vollständig geladen wurde. Im Gegensatz dazu würde diese Seite einige Daten aus einer anderen Quelle asynchron laden (parallel (theoretisch) mit anderen Aktionen), wenn auf dieser Seite ein Ereignis AJAX (das heißt ein asynchrones JavaScript- und XML-Ereignis) mit einer Benutzeraktion verknüpft wäre los.

Beispiel mit zwei synchronen Ereignissen (A und B): Zuerst macht A etwas. Wenn A fertig ist, macht B etwas.

Beispiel mit zwei asynchronen Ereignissen (A und B): Sowohl A als auch B tun gleichzeitig etwas, und keines der Ereignisse wartet auf das andere.

12
chaimp

"Beim Programmieren sind asynchrone Ereignisse Ereignisse, die unabhängig vom Hauptprogrammablauf auftreten. Asynchrone Aktionen sind Aktionen, die in einem nicht blockierenden Schema ausgeführt werden, wodurch der Hauptprogrammablauf die Verarbeitung fortsetzen kann."

"Mit Ajax können Webanwendungen Daten asynchron im Hintergrund Vom Server abrufen , Ohne die Anzeige Und das Verhalten der vorhandenen Seite zu beeinträchtigen."

Wenn Sie unter SO auf Bearbeiten und Speichern klicken, geschieht dies asynchron.

12

Hier ist ein Beispiel für eine asynchrone Operation in Javascript (Sie müssen Ihre Javascript-Konsole geöffnet haben)

console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};

//OUTPUT:
//One!
//Three!
//Two!

Der Aufruf von console.log('Two!') wird ausgeführt, ohne den Rest des Codes, der danach passiert, zu blockieren.

Ersetzen Sie in einem realen Szenario setTimeout durch einen Klick auf eine Schaltfläche auf einer Webseite. Die Reaktion auf das Klicken auf die Schaltfläche wird möglicherweise ausgeführt, ohne dass andere Code-Ausführung wie das Seiten-Rendering blockiert wird.

7
statenjason

Einfach ausgedrückt bedeutet dies etwas, das nach einer unbekannten Zeit auftritt. Erwarten Sie also keine unmittelbaren Ergebnisse.

Zum Beispiel: "Mama, kann ich fünf Dollar haben?"

Wenn ich meine Hand für Geld ausstelle, erwarte ich, dass sie sofort darauf reagiert, indem sie mir Geld gibt (synchron).

Realistisch betrachtet sie mich für ein oder zwei Augenblicke und beschließt dann zu antworten, wann sie will (asynchron).

5
Kai

Wenn zwei verschiedene Ereignisse getrennt voneinander auftreten, können Sie dies nicht tun

task1
task2

ohne zu überprüfen, dass task1 wirklich fertig ist.

2
Teson

Asynchrone Ereignisse sind solche Ereignisse, von denen wir nicht wissen, wann sie in der Zukunft auftreten werden, z. B. wenn der Server für eine Datei angefordert wird, von der wir nicht wissen, wann sie unsere Anforderung erfüllt, oder UI-Ereignisse, die wir nicht kennen, wenn der Benutzer dies tut Klicken Sie auf eine Schaltfläche oder ein anderes Element der Benutzeroberfläche, aber trotz der Tatsache, dass andere Dinge auf der Seite oder Anwendung ausgeführt werden, wird nichts blockiert, und die gesamte Benutzeroberfläche wird erst angezeigt, wenn eine Datei vom Server nicht kommt oder ein Ereignis auftritt. Alle Dinge sind unabhängig Das ist die Stärke von asynchronen Ereignissen, sagen wir einfach unabhängige Ereignisse

1
blackHawk

Wenn der Code synchron (oder sync) ist, bedeutet dies, dass jeder Code in der Reihenfolge nacheinander ausgeführt wird und der nächste Code nicht ausgeführt werden kann, bis der vorherige abgeschlossen ist. Der meiste Code ist normalerweise synchron.

Wenn der Code asynchron (oder asynchron) ist, kann der Code separat und unabhängig von anderem Code ausgeführt werden. Wenn in der Mitte einer Reihe von Synchronisierungscodes ein asynchroner Code vorhanden ist, wird der asynchrone Code im Kontext dieser speziellen Frage nur ausgeführt, wenn sein Ereignis ausgelöst wird, unabhängig davon, wo er sich in dem Synchronisierungscode befindet. Es ist vollständig getrennt und unabhängig vom Sync-Code und wird ausgeführt, wann immer das Ereignis dies sagt, nicht nur, wenn der vorherige Code ausgeführt wurde. Einige Beispiele hierfür sind Code, der in einem Zeitintervall ausgeführt wird, nachdem eine Datei erfolgreich gespeichert wurde, nachdem eine Webanforderung gesendet wurde, wenn der Benutzer auf eine Schaltfläche klickt oder nachdem ein Bild geladen wurde.

0
Grant Gryczan

Synchronous Vs. Asynchrone Ereignisse

Einige Ereignishandler werden sofort aufgerufen, wenn das Ereignis auftritt. Diese werden als "synchrone" Ereignisse bezeichnet. Ein Beispiel ist DocumentNew. Es wird aufgerufen, sobald der Benutzer ein neues Dokument erstellt.

Einige Ereignisse werden jedoch kurz nach dem Auftreten des Ereignisses aufgerufen, normalerweise nach einer kurzen Leerlaufzeit. Diese Ereignisse werden als "asynchrone" Ereignisse bezeichnet. Sie sind asynchron, da Source Insight destabilisiert werden würde, wenn ein vom Benutzer geschriebenes Makro genau zum Zeitpunkt des Ereignisses aufgerufen würde.

0
Vitthal Walunj