Callback-Funktion: Was sind Rückruffunktionen?

JavaScript ist eine der dominierenden Sprachen in der Erstellung von Webseiten. Man nutzt die Möglichkeiten der Skriptsprache, um Seiten interaktiv zu gestalten und auf Eingaben reagieren zu können. Hierbei werden innerhalb der Sprache Variablen, Objekte und Funktionen genutzt. Diese können alle aufeinander zugreifen und auch in verschiedenen Browsern immer das gleiche Ergebnis darstellen. Hinter den meisten Buttons oder einer Anzeige von Content zu einem bestimmten Zeitpunkt steckt dabei eine sogenannte Callback-Funktion (dt. Rückruffunktion).

Funktionen dieser Art sind jedoch keineswegs ein Alleinstellungsmerkmal von JavaScript: Auch andere bekannte Programmiersprachen wie C, Java, PHP oder Python setzen auf Callbacks, um auf einfache Weise bestimmte Benutzerparameter zu übergeben.

Was ist eine Callback-Funktion?

Funktionen arbeiten immer mit Parametern, auf die sie zurückgreifen. Wenn man einer Funktion als Parameter eine weitere Funktion zuweist, spricht man von einer Callback-Funktion. Diese Callback-Funktionen werden sehr oft in Bibliotheken und Frameworks wie den JavaScript-Anwendungen jQuery, Angular oder node.js verwendet. Sie eignen sich dazu, Funktionen erweiterbar zu machen und dann bei gewissen Ereignissen oder Umständen aufgerufen zu werden.

Wie funktioniert eine Callback-Funktion?

Eine Callback-Funktion hat immer eine bestimmte Auswirkung, die an bestimmte Umstände gebunden ist. Dementsprechend werden Callback-Funktionen nur aufgerufen, wenn eine klar definierte Handlung erfolgt ist. Ein gutes Beispiel für Rückruffunktionen sind Event-Handler (dt. Ereignisbehandler), die beispielsweise in HTML-Elementen wie Buttons zum Einsatz kommen. Ein Event bzw. Ereignis kann hier ein Klick mit der Maus sein, der die Ausführung der Callback-Funktion verursacht. Die Callback-Funktion an sich wird vermutlich für eine Weiterleitung auf eine weitere Seite sorgen. Auch die Übergabe eines Werts in einem Formular, das man ausfüllt, ist ein mögliches Szenario.

Der Hauptunterschied zwischen einer normalen Funktion und einer Callback-Funktion lässt sich also folgendermaßen festhalten: Während eine normale Funktion direkt aufgerufen wird, wird die Rückruffunktion zunächst nur definiert. Aufgerufen und ausgeführt wird die Funktion erst, wenn ein bestimmtes Ereignis eintritt. Wie erwähnt finden Callback-Funktionen in den verschiedensten Programmiersprachen Anwendung. Dabei unterscheiden sich zwar die Syntax und der Aufbau der Methoden, das Prinzip des Callbacks bleibt jedoch sprachübergreifend erhalten.

Callback-Funktion in JavaScript

In der Programmierung mit JavaScript sind Callback-Funktionen weit verbreitet. Dabei kann es sich um eine Funktion handeln, die beim Drücken eines Buttons aufgerufen wird, oder um Content, der zeitversetzt mit einer setTimeout()-Funktion verbunden ist.

Ein einfaches Beispiel für eine Rückruffunktion in JavaScript ist ein gewöhnlicher Button:

document.getElementById("Button1").addEventListener("click", function() {
	console.log("Button wurde gedrückt");
}, false);

In diesem Beispiel wurde ein EventListener als Callback eingesetzt, der bei einem bestimmten Ereignis ausgelöst wird – in diesem Fall der Klick auf den Button mit der ID „Button1“. Sobald der Button angeklickt wird und dadurch die Bedingungen für die Callback-Funktion erfüllt sind, wird die Funktion ausgeführt und in der Konsole die Nachricht „Button wurde gedrückt“ ausgegeben. Um eine Abwärtskompatibilität für ältere Browser zu gewährleisten, wurde im Beispiel zudem der Parameter „false“ verwendet.

Callback-Funktionen in PHP

In PHP werden Callback-Funktionen ähnlich wie bei JavaScript aufgerufen. Allerdings können Rückruffunktionen in der Skriptsprache auch Methoden eines Objekts sein, die über statische Klassenmethoden verfügen.

Ein Beispiel für eine klassische PHP-Callback-Funktion:

 

function my_callback_function() {
	echo 'Hallo Welt!';
}

Durch den Aufruf dieser Funktion wird der String „Hallo Welt!“ ausgegeben. Um den Callback als Methode aufzurufen, geht man folgenderweise vor:

class MyClass {
	static function myCallbackMethod() {
		echo 'Hallo Welt!';
	}
}

In PHP sind Callbacks ein beliebtes Mittel, damit Funktionen untereinander kommunizieren können. Sie werden oft genutzt, um Plug-ins oder Module sauber zu implementieren und deren Funktion sicherzustellen.

Callback-Funktionen in Python

Python ist aufgrund der einfachen Syntax eine der beliebtesten Programmiersprachen. Durch den vielseitigen Einsatz in Soft- und Hardware bietet die Sprache den perfekten Einstieg, wenn man das Programmieren erlernen will. Besonders in den Bereichen Data Science und Machine Learning ist die Sprache stark gefragt und bietet viele Vorzüge gegenüber anderen Sprachen.

In Python werden Callbacks meistens genutzt, um UI-Elementen verschiedene Ereignisse zuzuordnen. In nachfolgendem Beispiel werden zwei Funktionen definiert, der Callback „get_square“ und der Aufruf „caller“. Anschließend wird der Callback aufgerufen:

>>> def get_square(val):
		return val ** 2
>>> def caller(func, val):
		return func(val)
>>> caller(get_square, 5)

Die Syntax in der Callback-Funktion ist ähnlich wie bei JavaScript und PHP sehr simpel aufgebaut.

Callback-Funktionen in Java

In Java ist es eher unüblich, eine Callback-Funktion auszuführen. Man kann sich dem Prinzip annehmen, benötigt dazu jedoch beispielsweise das Reflection-Feature. Dabei werden Methoden und Funktionen abgebildet und zu Objekten verarbeitet. Demnach ist die Reflection eher eine Bibliotheksfunktion als ein Callback.

Auch das SAX-Prinzip funktioniert bei Java ähnlich der Callback-Funktion. Hierbei wird eine XML-Datei durch den SAX-Parser eingelesen und basierend auf dem eintreffenden Ereignis eine bestimmte Callback-Methode aufgerufen – dazu zählen u. a. die Methoden startDocument() und startElement().

Callback-Funktionen in C

In der Programmiersprache C lassen sich Callback-Funktionen ähnlich wie in JavaScript einbinden. Die Sprache wird häufig für die System- und Anwendungsprogrammierung genutzt und ist fester Bestandteil für die Programmierung von Systemkernen oder Betriebssystemen. Viele Programmiersprachen wie z. B. JavaScript, PHP, C++, Java oder auch C# haben sich stark an der Syntax und den Eigenschaften von C orientiert. Daher gibt es auch viele Überschneidungen in der Syntax und den Methoden der verschiedenen Sprachen.

Ein Beispiel für eine Callback-Funktion in C:

void A()
{
  printf("Ich bin eine Funktion A\n");
}

// Die Callback Function
void B(void (*ptr)())
{
  (*ptr) (); // Hier wird der Callback zu A aufgerufen
}

int main()
{
  void (*ptr)() = &A;

  // Funktion B wird aufgerufen
  // Funktion A wird als Argument übergeben
  B(ptr);

  return 0;
}

Die Ausgabe dieses Codes lautet dementsprechend: „Ich bin eine Funktion A“. Wie auch in JavaScript wird eine Callback-Funktion immer dann aufgerufen, wenn ein bestimmtes Ereignis eintritt. In C werden diese Funktionen genutzt, um diverse neue Libraries für die weitere Programmierung zu erstellen und um Signale vom Kernel auszugeben, die für die Handhabe von asynchronen Events benötigt werden.


Auf dem Laufenden bleiben?

Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!