Heim  >  Artikel  >  Web-Frontend  >  Asynchrone Muster in Node.js – Node.js-Tutorial – Teil 6

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

DDD
DDDOriginal
2024-09-20 18:46:02752Durchsuche

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 I/O-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 basiert. 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 Rückrufhölle auf und sorgen für eine bessere Fehlerbehandlung.
  • Async/Await sorgt dafür, dass asynchroner Code synchron aussieht, was die Lesbarkeit verbessert.

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

Das obige ist der detaillierte Inhalt vonAsynchrone Muster in Node.js – Node.js-Tutorial – Teil 6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn