„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Asynchrone Muster in Node.js – Node.js-Tutorial – Teil 6

Asynchrone Muster in Node.js – Node.js-Tutorial – Teil 6

Veröffentlicht am 02.11.2024
Durchsuche:798

Async Patterns in Node.js - Node.js Tutorial - Part 6

Asynchrone Muster in Node.js

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.

Async vs. Sync-Code schreiben

Synchroner Code

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);
  • Problem: Wenn readFileSync lange dauert (z. B. weil die Datei groß ist), wird die gesamte Anwendung während dieser Zeit blockiert.

Asynchroner Code

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!');
  • In diesem Beispiel wird die Datei asynchron gelesen und das Programm blockiert nicht; die Zeile console.log('This will log before the file content!') wird ausgeführt, während die Datei noch gelesen wird.

Wann sollte synchron vs. asynchron verwendet werden?

  • Synchroner Code eignet sich gut für kleine Aufgaben oder Skripte, bei denen die Leistung keine Rolle spielt.
  • Asynchroner Code ist ideal für E/A-intensive Anwendungen wie Webserver, bei denen Sie den Hauptthread nicht blockieren möchten, während Sie auf Vorgänge wie Datenbankabfragen oder HTTP-Anfragen warten.

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();

Zusammenfassung

  • Rückrufe sind einfach, können aber zur Rückrufhölle führen.
  • Versprechen räumen die Callback-Hölle auf und sorgen für eine bessere Fehlerbehandlung.
  • Async/Await lässt asynchronen Code synchron aussehen und verbessert so die Lesbarkeit.

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! ?

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/hakimmohamed/async-patterns-in-nodejs-1e10?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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