Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03253.jsonl.gz/142

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:
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.