Einführung in Node.js, Folge 7: Callbacks verstehen

In Node.js gehört der Umgang mit asynchronem Code zum Alltag. Dazu greift man in der Regel auf den Einsatz von Callbacks zurück. Doch der Umkehrschluss gilt nicht: Nicht alle Callbacks sind asynchron. Woran erkennt man asynchrone Callbacks, und worauf gilt es bei ihrer Verwendung zu achten?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Golo Roden

In Node.js gehört der Umgang mit asynchronem Code zum Alltag. Dazu greift man in der Regel auf den Einsatz von Callbacks zurück. Doch der Umkehrschluss gilt nicht: Nicht alle Callbacks sind asynchron. Woran erkennt man asynchrone Callbacks, und worauf gilt es bei ihrer Verwendung zu achten?

Regelmäßig begegnet man der Behauptung, Callbacks seien in Node.js stets asynchron. Das ist jedoch falsch. Zwar kommt man bei asynchronem Code automatisch mit Callbacks in Berührung, doch das Gegenteil gilt nicht. Tatsächlich gibt es in JavaScript sogar etliche Funktionen, die Callbacks auf synchrone Art verwenden, beispielsweise map und reduce.

Mehr Infos

Für asynchrone Callbacks gelten dabei andere Regeln als für ihre synchronen Pendants. Das betrifft zum Beispiel die Fehlerbehandlung, bei der man im asynchronen Fall mit try und catch nicht allzu weit kommt. Stattdessen gilt es, den err-Parameter auszuwerten.

Besonderes Augenmerk verdienen zudem auch Funktionen, die Callbacks teilweise synchron, teilweise asynchron aufrufen. Hier gilt es, die synchronen Aufrufe gegebenenfalls in asynchrone zu überführen, um eine deterministische Ausführung zu gewährleisten. Dazu stellt Node.js verschiedene Funktionen zur Verfügung.

Wie das alles funktioniert und worauf es dabei zu achten gilt, zeigt das folgende Video:

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier eine Vimeo-Video (Vimeo LLC) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Vimeo LLC) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

tl;dr: Node.js kennt synchrone und asynchrone Callbacks. Für die asynchrone Variante gelten andere Regeln, beispielsweise bei der Fehlerbehandlung. Unter Umständen muss synchroner Code in asynchronen Code überführt werden, um eine deterministische Ausführung zu gewährleisten. ()