Sobes.tech
Middle

Was hast du vor dem Erscheinen von Promise verwendet?

sobes.tech KI

Antwort von AI

Vor dem Aufkommen von Promise wurden Callbacks weit verbreitet verwendet.

Wesentliche Eigenschaften von Callbacks:

Eine Funktion wird an eine andere Funktion als Argument übergeben und nach Abschluss einer bestimmten Operation ausgeführt.

Beispiel:

// Beispiel für einen Aufruf einer asynchronen Operation mit Callback
function fetchData(callback) {
  setTimeout(() => {
    const data = "Einige Daten";
    callback(null, data); // Das erste Argument ist ein Fehler, das zweite ist das Ergebnis
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Fehler beim Abrufen der Daten:", err);
  } else {
    console.log("Daten empfangen:", data);
  }
});

Nachteile der ausschließlichen Verwendung von Callbacks:

  • Callback Hell (Callback-Hölle): Die Verkettung verschachtelter asynchroner Operationen führt zu sehr verschachteltem und schwer lesbarem Code.
  • Schwierigkeiten bei der Fehlerbehandlung: Fehler müssen auf jeder Verschachtelungsebene übergeben und geprüft werden.
  • Fehlender standardisierter Ansatz: Verschiedene Bibliotheken konnten unterschiedliche Konventionen für Callbacks verwenden.

Alternative Ansätze vor Promise:

Vor dem Aufkommen von Promise wurden neben "reinen" Callbacks Bibliotheken und Muster zur Verwaltung der Asynchronität verwendet, wie:

  • Asynchrone Bibliotheken: Zum Beispiel async (für Node.js, aber auch im Browser verwendbar). Bieten Hilfsmittel zur Verwaltung asynchroner Abläufe (parallele Ausführung, sequenzielle Ausführung).
  • Publisher/Subscriber (Pub/Sub) Muster: Für komplexere Interaktionsszenarien.
  • Ereignis-Emitter: In Node.js und Browser-Umgebungen (z.B. EventEmitter).

Dennoch blieben Callbacks die Grundlage für viele asynchrone Operationen. Promise bot eine strukturiertere, einheitlichere und lesbarere Möglichkeit, mit Asynchronität umzugehen, und beseitigte viele Probleme des "Callback Hell".