Node.js arbeitet auf einer ereignisgesteuerten Single-Thread-Architektur, was bedeutet, dass es viele Vorgänge gleichzeitig verarbeiten kann, ohne den Haupt-Thread zu blockieren. Dies ist entscheidend für die Erstellung skalierbarer Anwendungen, bei denen Aufgaben wie E/A-Vorgänge (Dateien lesen, Datenbanken abfragen usw.) asynchron erfolgen müssen, um eine Blockierung der Ausführung anderen Codes zu vermeiden.
Synchroner Code führt einen Schritt nach dem anderen aus, was bedeutet, dass jeder Schritt abgeschlossen sein muss, bevor mit dem nächsten fortgefahren werden kann. Dies kann den Hauptthread blockieren, wenn Vorgänge langsam sind (z. B. das Lesen einer großen Datei oder das Abfragen einer Datenbank).
Beispiel (synchroner Code):
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
Asynchroner Code hingegen blockiert nicht den Hauptthread. Anstatt auf den Abschluss eines Vorgangs zu warten, setzt das Programm die Ausführung fort und verarbeitet das Ergebnis des asynchronen Vorgangs, wenn es bereit ist.
Beispiel (Asynchroner Code):
const fs = require('fs'); // Call Back fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); console.log('This will log before the file content!');
Asynchron/Warten
Async/await wurde in ES2017 (Node.js 7.6) eingeführt und ist syntaktischer Zucker, der auf Versprechen aufbaut. Es ermöglicht das Schreiben von asynchronem Code auf synchrone Weise, wodurch er besser lesbar und einfacher zu warten ist.
Beispiel (Asynchron/Warten):
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
Die Wahl von asynchronem oder synchronisiertem Code hängt von Ihrem Anwendungsfall ab. Bevorzugen Sie bei E/A-intensiven Vorgängen immer asynchrone Muster, damit der Hauptthread nicht blockiert und Ihre Anwendung reaktionsfähig bleibt.
Vielen Dank fürs Lesen und viel Spaß beim Codieren! ?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3