Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Rückrufe | Asynchrones JavaScript und APIs
Fortgeschrittene JavaScript-Meisterschaft
course content

Kursinhalt

Fortgeschrittene JavaScript-Meisterschaft

Fortgeschrittene JavaScript-Meisterschaft

2. DOM-Manipulation
3. Ereignisse und Ereignisbehandlung
4. Asynchrones JavaScript und APIs

book
Rückrufe

Was ist ein Callback?

In JavaScript werden Callbacks häufig verwendet, um asynchrone Aufgaben zu bearbeiten, wie das Abrufen von Daten von einer API, das Lesen von Dateien oder das Warten auf Benutzereingaben.

Callbacks bilden die Grundlage der asynchronen Programmierung in JavaScript, da sie es dem Programm ermöglichen, Aufgaben zu bearbeiten, die Zeit in Anspruch nehmen, ohne die Ausführung des restlichen Codes zu blockieren.

Wie Callbacks in der asynchronen Programmierung funktionieren

Bei einem asynchronen Vorgang wird eine Callback-Funktion ausgeführt, sobald der Vorgang abgeschlossen ist, um sicherzustellen, dass der Rest des Programms fortgesetzt werden kann, während auf den Abschluss der Aufgabe gewartet wird.

html

index.html

js

index.js

copy
  • fetchData: Simuliert einen asynchronen Vorgang (wie das Abrufen von Daten), der 2 Sekunden dauert, um abgeschlossen zu werden. Die Callback-Funktion wird aufgerufen, sobald die Daten verfügbar sind;
  • displayData: Die Callback-Funktion, die an fetchData übergeben wird. Sie wird mit den abgerufenen Daten aufgerufen, sobald der Vorgang abgeschlossen ist;
  • Der Rest des Codes wird weiter ausgeführt, während die Daten abgerufen werden, und wenn die Daten bereit sind, wird der Callback ausgelöst, um sie zu verarbeiten.

Probleme mit Callbacks: Callback-Hölle und Verschachtelung

Obwohl Callbacks mächtig sind, können sie schnell zu Problemen führen, wenn viele asynchrone Operationen voneinander abhängen. Dies führt oft zu "Callback-Hölle", bei der Callbacks tief verschachtelt sind, was den Code schwer lesbar und wartbar macht.

Dieses Beispiel veranschaulicht die Callback-Hölle, ein Problem, das auftritt, wenn mehrere asynchrone Operationen voneinander abhängen und zu tief verschachtelten Callbacks führen. Hier hängt jede Funktion (getUser, getOrders, getOrderDetails, getShippingStatus) vom Ergebnis der vorherigen ab, was zu einer verschachtelten Struktur führt, die schwer zu lesen, zu warten und zu debuggen ist. Dieser Ansatz erschwert die Fehlerbehandlung, die Ablaufsteuerung und zukünftige Änderungen, was den Code unhandlich macht, wenn die Anzahl der Callbacks zunimmt.

Refactoring von Callbacks für saubereren Code

Um die Callback-Hölle zu vermeiden und die Lesbarkeit und Wartbarkeit Ihres Codes zu verbessern, gibt es einige Strategien, um Callbacks zu refaktorisieren:

Benannte Funktionen: Anstatt anonyme Callback-Funktionen zu verwenden, erstellen Sie benannte Funktionen, die wiederverwendet werden können und den Code besser organisieren.

Durch die Verwendung benannter Funktionen wird der Fluss des Codes klarer. Es ist einfacher zu verstehen, zu warten und zu debuggen als tief verschachtelte anonyme Rückruffunktionen.

Aufschlüsselung der Logik: Zerlegen Sie komplexe Aufgaben in kleinere Funktionen. Jede Funktion sollte eine spezifische Operation ausführen und die nächste Operation aufrufen. Dies reduziert die Verschachtelung und macht den Code modularer.

Promises (werden in späteren Kapiteln behandelt): Promises sind eine moderne Alternative zu Rückrufen und bieten eine sauberere, besser lesbare Möglichkeit, asynchrone Operationen zu handhaben. Promises helfen, das Callback-Hell zu eliminieren, indem sie .then()-Methoden verketten.

1. Was ist eine Callback-Funktion?

2. Was ist "Callback-Hölle"?

Was ist eine Callback-Funktion?

Was ist eine Callback-Funktion?

Wählen Sie die richtige Antwort aus

Was ist "Callback-Hölle"?

Was ist "Callback-Hölle"?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2
We're sorry to hear that something went wrong. What happened?
some-alt