𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻 𝘂𝗻𝗱 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻
JavaScript läuft auf einem einzelnen Thread. Das bedeutet, dass es immer nur eine Sache zur Zeit ausführt. Um effizienten Code zu schreiben, müssen Sie verstehen, wie JavaScript mit Aufgaben umgeht.
Synchrones JavaScript
Synchroner Code wird Zeile für Zeile ausgeführt. Jede Aufgabe wartet darauf, dass die vorherige abgeschlossen ist. Dies wird als „Blocking“ bezeichnet. Wenn eine Aufgabe lange dauert, stoppt das gesamte Programm.
- Ausführung: Feste Sequenz.
- Blockierend: Ja.
- Komplexität: Einfach.
- Bestens geeignet für: Einfache, sequentielle Aufgaben.
Asynchrones JavaScript
Asynchroner Code läuft unabhängig. Aufgaben blockieren anderen Code nicht, während sie warten. Dies wird als „Non-Blocking“ bezeichnet. Die Aufgabe startet im Hintergrund und benachrichtigt Sie, wenn sie abgeschlossen ist.
- Ausführung: Aufgaben laufen unabhängig.
- Blockierend: Nein.
- Komplexität: Höher.
- Bestens geeignet für: API-Aufrufe, Timer und Dateivorgänge.
Drei Möglichkeiten, asynchrone Aufgaben zu handhaben:
- Callbacks: Eine Funktion, die ausgeführt wird, nachdem eine Aufgabe abgeschlossen ist.
- Promises: Ein Objekt, das den Abschluss oder das Scheitern einer Operation darstellt.
- Async/Await: Die sauberste Methode. Sie lässt asynchronen Code wie synchronen Code aussehen, ohne den Thread zu blockieren.
Häufige asynchrone Operationen:
- Timer: setTimeout()
- API-Aufrufe: fetch()
- Dateilesen: readFile()
- Benutzerereignisse: addEventListener()
Der Event Loop ermöglicht dies. Er nutzt den Call Stack, Web APIs und eine Callback Queue, um mehrere Aufgaben gleichzeitig zu verwalten.
Zusammenfassung:
- Synchron: Eines nach dem anderen. Blockiert die Ausführung.
- Asynchron: Unabhängige Aufgaben. Blockiert nicht.
- JavaScript-Standard: Synchron.
Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f
Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69