Wie behandelt Node.js nicht-blockierende Operationen?

Wie Node.js nicht-blockierende Operationen behandelt

Node.js ist bekannt für seinen nicht blockierenden, ereignisgesteuerten Ansatz zur Handhabung von Operationen. Dies ist ein großer Vorteil, da es verhindert, dass die Anwendung einfriert oder anhält, während sie auf die Rückkehr einer Funktion wartet. Stattdessen ermöglicht Node.js dem Code, fortzufahren und später auf das Ergebnis der Operation zu reagieren. Drei Hauptmethoden werden genutzt, um nicht-blockierende Operationen in Node.js zu behandeln: Callbacks, Promises und die Async/Await-Syntax.

Callbacks

Eine Callback-Funktion in Node.js ist eine Funktion, die als Argument an eine andere Funktion übergeben wird und von dieser aufgerufen wird, wenn ein bestimmtes Ereignis (typischerweise das Ende einer Operation) eintritt. Callbacks sind eine fundamentale Methode zur Verwaltung von asynchronen Operationen und Ereignissen in Node.js. Sie erlauben es dem Code, mit der Ausführung fortzufahren, während sie auf das Ergebnis der Operation warten.

fs.readFile('/pfad/zur/datei', function(err, daten) {
  if (err) throw err;
  console.log(daten);
});
console.log('Liest Datei...');

In diesem Beispiel wird die Funktion readFile ausgeführt und der Code fährt fort, während darauf gewartet wird, dass readFile abschließt.

Promises

Promises sind ein weiteres Werkzeug, das Node.js zur Behandlung von nicht-blockierenden Operationen bietet. Ein Promise ist ein Objekt, das das potenzielle Ergebnis einer asynchronen Operation repräsentiert. Es hat drei Zustände: pending, fulfilled and rejected. Sie verbessern die Lesbarkeit und Beherrschbarkeit des Codes, da sie den 'Callback-Hell'-Zustand verhindern.

let lesenPromise = fs.promises.readFile('/pfad/zur/datei');
lesenPromise.then(daten => {
  console.log(daten);
}).catch(err => {
  console.error(err);
});
console.log('Liest Datei...');

In diesem Beispiel gibt readFile ein Promise zurück, das, wenn es erfüllt ist, die Daten der Datei enthält.

Async/Await

Die Async/Await-Syntax ist eine weitere Methode, die Node.js zur Behandlung von nicht-blockierenden Operationen bietet. Diese Syntax ermöglicht es uns, asynchrone Code auf eine Weise, die der Synchronschreibung ähnelt, zu schreiben und zu lesen. Dabei verwenden wir das "await"-Schlüsselwort, um auf das Ergebnis eines Promises zu warten, und das "async"-Schlüsselwort, um eine Funktion zu kennzeichnen, die ein Promise zurückgibt.

async function datenLesen() {
  try {
    let daten = await fs.promises.readFile('/pfad/zur/datei');
    console.log(daten);
  } catch (err) {
    console.error(err);
  }
}
console.log('Liest Datei...');
datenLesen();

In diesem Beispiel wird await verwendet, um auf das Ergebnis von readFile zu warten, bevor die Daten ausgegeben werden.

Zusammenfassend ist also zu sagen, dass Node.js nicht-blockierende Operationen durch die Verwendung von Callbacks, Promises und der Async/Await-Syntax behandelt, und nicht durch das Anhalten der gesamten Anwendung. Diese Methoden ermöglichen es Node.js, asynchrone Operationen effizient zu handhaben und die Leistungsfähigkeit der Anwendung zu maximieren.

Finden Sie das nützlich?