201609Jul

JavaScript: Asynchrone Abläufe mit Zonen steuern

Die Arbeit mit asynchronen Abläufen kann in JavaScript seit geraumer Zeit durch Promises und entsprechenden Bibliotheken erleichtert werden. Gerade JSON-Requests und deren Verarbeitung wird durch Promises wesentlich einfacher, da keine verschachtelten Callbacks mehr benötigt werden. Verbinden lassen sich asynchrone Abläufe auch mit Observables, wie man sie beispielsweise von Knockout kennt. Angular 2 etwa greift hierfür auf die ReactiveX-Observables zurück. Ebenfalls neu in Angular 2 ist das Konzept von Zonen: Bei einer Zone handelt es sich um einen Ausführungsbereich, der sich über asynchrone Aufrufe erstreckt. In JavaScript wird dadurch das Konzept eines lokalen Threadspeichers simuliert.

JavaScript - Asynchrone Abläufe mit Zonen steuern

Das AngularJS-Team hat für diesen Zweck die Bibliothek Zone.js entwickelt, die fester Bestandteil von Angular 2 ist und mittlerweile auch als Standalone-Bibliothek genutzt werden kann. Inspiriert wurde Zone.js von dem Zonen-Konzept von Dart. Mit Zonen lassen sich also asynchrone Verarbeitungen, wie etwa setTimeout oder Promises, gezielt steuern. Eine vereinfachte Implementierung von Zonen gibt es zum Beispiel mit can-zone. Auf der GitHub-Seite finden sich Code-Beispiele, wie einfache Zonen umgesetzt werden können. Bis es Zonen in den EMCAScript-Standard schaffen, dürfte noch eine Weile vergehen. Bis dahin eignen sich derartige Frameworks also bestens.