© Matej Kotula/Shutterstock.com
TypeScript lernt async/await

Asynchrones TypeScript


In JavaScript sind viele APIs asynchron. Im Gegensatz zu .NET stehen synchrone Funktionen zum Zugriff auf Netzwerk, Datenbanken oder das Dateisystem überhaupt nicht zur Verfügung. Die Folge ist, dass man in JavaScript-Programmen vor lauter Callbacks häufig den eigentlichen Algorithmus nicht mehr sieht. Der Code ist schwer lesbar und fehleranfällig. Frameworks wie Async [1] verbessern die Situation, sind aber gewöhnungsbedürftig. Mit der Version 1.7 hat TypeScript in Sachen asynchrone Funktionen mit C# gleichgezogen: async/await wurde eingeführt. Dieser Artikel zeigt, welche Verbesserungen async/await bringt, wie das Sprachkonstrukt einzusetzen ist und welche Einschränkungen es aktuell gibt.

Meiner Ansicht nach versteht man Softwareentwicklungskonzepte am besten, wenn man sich klarmacht, welches Problem damit gelöst wird. Lassen Sie uns unsere Reise zu async/await damit beginnen. JavaScript-Entwicklung sowohl am Client als auch am Server hat viel mit asynchroner Programmierung zu tun. Wann immer I/O-Operationen ausgeführt werden sollen, hat man keine andere Wahl, als Funktionen asynchron aufzurufen. Auch wenn die Details sich von Fall zu Fall unterscheiden, das Grundkonzept ist immer das Gleiche: Man gibt im Funktionsaufruf eine Callback-Funktion an, die aufgerufen werden soll, wenn die Operation fertig ist. Das Problem dabei ist, dass die Struktur des Codes aufgrund der Callbacks nicht mehr dem Algorithmus entspricht, den man eigentlich programmieren möchte. Die technische Notwendigkeit der asynchronen Programmierung diktiert die Struktur des Codes. Dadurch wird er schwer zu lesen und zu warten.

Lassen Sie uns dieses Problem zum besseren Verständnis an einem Beispiel betrachten. Angenommen wir möchten den nachfolgenden, einfachen Algorithmus umsetzen:

  • Öffne Verbindung zur Datenbank
  • Lies alle Personen mit Vornamen „John“
  • Iteriere über alle ermittelten Personen
  • Wenn die aktuelle Person ein Kunde ist, lies die Kundendaten und gib Personen- und Kundendaten am Bildschirm aus
  • Wenn die aktuelle Person ein Lieferant ist, lies die Lieferantendaten und gib Personen- und Lieferantendaten am Bildschirm aus
  • Schließe die Datenbankverbindung

Diesen Algorithmus möchten wir mit TypeScript und Node.js programmieren. Als Datenbank verwenden wir exemplarisch MongoDB. (Falls Sie mit dem Code experimentieren wollen, finden Sie ihn auf GitHub [2]) .

import * as mongodb from 'mongodb';

// Open Database
mongodb.MongoClient.connect("mongodb://10.0.75.2:27017/demo", (err, db) => {...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang