Die beste Vorgehensweise zur Handhabung von asynchronem Code in Node.js besteht darin, Promises und async/await zu verwenden. Aber was genau bedeutet das?
Ein Promise
ist ein Objekt in JavaScript, das eine Operation repräsentiert, die noch nicht abgeschlossen wurde, aber in der Zukunft abgeschlossen wird. Es kann entweder erfolgreich (erfüllt) oder fehlerhaft (abgelehnt) sein.
Mit Promises können Sie asynchronen Code schreiben, der wie synchroner Code aussieht. Anstatt Funktionen in Funktionen in Funktionen zu schachteln (was zu so genannter "Callback-Hölle" führt), können Sie then
verwenden, um anzugeben, was passieren soll, sobald ein Promise erfolgreich ist.
Sehen wir uns ein einfaches Beispiel an:
let fileReadPromise = fs.promises.readFile('path/to/file');
fileReadPromise.then(result => {
console.log(result);
}).catch(error => {
console.error(error);
});
In diesem Code lesen wir eine Datei asynchron. Der fs.promises.readFile Funktion gibt ein Promise zurück, das wir speichern. Dann sagen wir "Wenn dieses Promise erfüllt wird (then
), dann geben Sie das Ergebnis aus. Wenn es ein Problem gibt (catch
), dann geben Sie den Fehler aus".
Async / Await ist eine weitere Möglichkeit, asynchronen Code in JavaScript zu schreiben, die auf Promises aufbaut. Eine Funktion, die als async
markiert ist, gibt immer ein Promise zurück. Mit dem await
-Schlüsselwort können Sie dann auf das Erfüllen dieses Promises "warten", bevor Sie weitermachen.
Hier ist ein Beispiel mit unserer Dateileseoperation:
async function readMyFile() {
try {
let result = await fs.promises.readFile('path/to/file');
console.log(result);
} catch(error) {
console.error(error);
}
}
readMyFile();
In diesem Beispiel deklarieren wir unsere gesamte Funktion als async
. Dann nutzen wir await
, um auf das Lesen der Datei zu "warten". Während es wartet, gibt Node.js den Thread frei, so dass es andere Aufgaben ausführen kann.
Diese Struktur mit try und catch ähnelt viel mehr dem synchronen Code, den wir in JavaScript gewohnt sind. Dadurch wird unser Code insgesamt viel einfacher zu lesen und zu warten.
Asynchroner Code in Node.js ist unglaublich mächtig und erlaubt es uns, die hohe Leistung von Node.js voll auszunutzen. Indem wir Promises und async/await verwenden, können wir diesen asynchronen Code auf eine Weise schreiben und verstehen, die klar und wartbar ist. Daher gilt das Verwenden von Promises und async/await als beste Praxis bei der Handhabung von asynchronem Code in Node.js.