WaBis

walter.bislins.ch

JavaScripts: Async

Javascript Bibliothek, die gleichzeitiges asynchrones Ausführen mehrerer JavaScripts ermöglicht, ohne den Browser zu blockieren.

Ausführung von JavaScripts in Browsern

Ein JavaScript wird im Browser von Anfang bis Ende in einem Rutsch durchgearbeitet. Wenn das Script viel Rechenzeit beansprucht, bleibt der Browser entsprechend lange blockiert und reagiert auf keine Benutzereingaben mehr. Im Extremfall wird die Ausführung vom Browser nach einer bestimmten Zeit abgebrochen, weil er annimmt, dass das Script in einer Endlosschleife steckt. Andere Scripts, welche auf Benutzereingaben reagieren sind während dieser Zeit blockiert.

Dieses Problem lässt sich mit der Async Bibliothek lösen:

Prinzip der Async Bibliothek

Anstatt dass ein aufwändiges JavaScript in einem Rutsch abgearbeitet wird, wird es in Teile zerlegt. Es lohnt sich vor allem, Schleifen aufzuteilen. Diese Teile werden nicht in einem Rutsch abgearbeitet, sondern man übergibt sie als Callbacks an ein CAsync Objekt. Das Async Objekt ruft per Timer-Event die Teile in der richtigen Reihenfolge auf. Zwischen diesen Timer-Events können andere Scripts auf Benutzereingaben reagieren oder es können weitere aufwändige Script über ein weiteres Async Objekt parallel ausgeführt werden.

Diese Art der Ausführung hat zudem den Vorteil, dass am Ende jedes Teilstücks der Fortschritt ausgegeben werden kann. Da der Browser zwischen den Teilstücken zum Zug kommt, wird die Fortschrittsanzeige auch nachgeführt. Dies wäre beim Abarbeiten des ganzen Scripts in einem Rutsch nicht möglich, da in diesem Falle alle Ausgaben unterdrückt werden, bis das Script zu Ende ist.

Wie sich eine Anwendung mit dem Async Objekt verhält, kann auf der Seite Async Demo ausprobiert werden.

Eigenschaften

  • Einfache Anwendung
  • Unabhängig von anderen JavaScript Bibliotheken
  • Ist relativ einfach in bestehende JavaScripts integrierbar
  • Über das Flag SyncMode kann eingestellt werden, dass der Code auch ohne Unterbruch ausgeführt wird
More Page Infos / Sitemap
Created Sonntag, 9. Februar 2014
Scroll to Top of Page
Changed Dienstag, 9. Dezember 2014