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".