====== LU01b - Synchrone VS Asynchrone Verarbeitung ====== Grundsätzlich gibt es zwei Varianten in JS, wie Daten eingelesen werden können: * Synchron * Asychron Beim synchronen Einlesen wartet JavaScript, bis die Datei komplett gelesen wurde – und macht in der Zeit gar nichts anderes. Beim asynchronen Einlesen liest Node.js die Datei im Hintergrund ein und kann waehrenddessen weiterarbeiten. Das eine blockiert, das andere nicht. {{:de:modul:m307:learningunits:lu01:synchronous-asynchronous.jpg?600|}} ===== Vergleich Sync VS Async ===== Die nachfolgende Tabelle zeigt die wesentlichen Unterschiede ^Art ^Verhalten ^Vorteil ^Nachteil ^ | **synchron (`readFileSync`)** | Programm pausiert, bis Datei fertig eingelesen ist | einfach, gut fuers schnelle Rumprobieren | blockiert den gesamten Ablauf – bei grossen Dateien oder vielen Zugriffen fatal | | **asynchron (`readFile`)** | Datei wird im Hintergrund gelesen, Code kann weiterlaufen | performant, ideal fuer Server/mehrere Zugriffe | Rueckgabewert kommt erst spaeter per Callback/Promise | **Beispiel für Synchrones Einlesen** const fs = require("fs"); const daten = fs.readFileSync("data.json", "utf8"); console.log("Weiter gehts erst, wenn das oben fertig ist."); **Beispiel für Asynchrones Einlesen** const fs = require("fs"); fs.readFile("data.json", "utf8", (err, daten) => { console.log("Ich komme spaeter – Datei ist jetzt fertig eingelesen."); }); console.log("Dieser Text erscheint direkt danach – ohne warten."); ===== Lernvideo ===== |Lernvideo - 5': What is asynchronous javascript-code?|{{:de:modul:m307:learningunits:lu01:what_is_asynchronous_javascript_code.mp4|}}| |Lernvideo - 8': Asynchronous Vs Synchronous Programming|{{:de:modul:m307:learningunits:lu01:asynchronous_vs_synchronous_programming.mp4|}}| ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Volkan Demir