Ein Callback ist eine Funktion, die als Argument an eine andere Funktion übergeben und von dieser zu einem späteren Zeitpunkt aufgerufen wird. Dadurch lässt sich Verhalten flexibel austauschen, ohne die aufrufende Funktion zu verändern — ein zentrales Muster in JavaScript, Python, C und vielen anderen Sprachen.
Wie funktioniert ein Callback?
Statt ein festes Verhalten einzubauen, übergibt man die gewünschte Logik als Funktion. Die äußere Funktion ruft den Callback dann an der passenden Stelle auf — einmal, mehrfach oder erst nach Abschluss einer asynchronen Operation.
def begruesse(name, callback):
text = f"Hallo, {name}!"
callback(text) # Callback aufrufen
def print_upper(text):
print(text.upper())
begruesse("Michael", print_upper) # HALLO, MICHAEL!
Typische Einsatzgebiete
- Event-Handling: Klick-, Tastatur- oder Netzwerk-Ereignisse lösen Callbacks aus (z.B.
addEventListenerim Browser). - Asynchroner Code: Callbacks melden das Ergebnis nach Abschluss einer Operation, z.B. bei Datei-I/O oder API-Aufrufen.
- Sortier- und Filterfunktionen: Man übergibt die Vergleichs- oder Filterlogik als Callback (z.B.
sort,filter,map). - Middleware und Plugins: Frameworks rufen registrierte Callbacks in einer festgelegten Reihenfolge auf.
Callback-Hölle und moderne Alternativen
Verschachtelte asynchrone Callbacks werden schnell unleserlich — die sogenannte „Callback-Hölle" (Callback Hell). Moderne Sprachen lösen das mit asynchronen Mustern: Promises, async/await (JavaScript), Futures (Python, Dart) oder Coroutinen (Kotlin, Go).
Praktische Tipps
- Callbacks kurz und eindeutig benennen; bei mehreren Argumenten ein Options-Objekt verwenden.
- Fehlerbehandlung nicht vergessen: Bei Node.js folgt man der Konvention
callback(err, result). - Für neue asynchrone APIs lieber Promise/async/await statt verschachtelter Callbacks verwenden.
Verwandte Grundlagen: Asynchron, JavaScript-Befehle, Lambda.