201120Jul

Resistance: Asynchrone JavaScript-Abläufe steuern

Manchmal sind es die kleinen Dinge, die eine große Wirkung haben können. Durch moderne JavaScript-Bibliotheken sind beispielsweise Callback-Funktionen selbstverständlich. Ebenso zählt Ajax zu den grundlegenden Funktionen, die ein Framework bietet. Das asynchrone Laden von Daten stellt dank dem XMLHttpRequest kein Problem mit JavaScript dar. Nun geht es nicht um das asynchrone Verarbeiten von Seiteninhalten, sondern von JavaScript-Funktionen.
Wenn mehrere Funktionen in Reihe geschaltet oder parallel ausgeführt werden sollen, muss dafür in der Regel zuerst ein Skript geschrieben werden, das diese Aufgabe übernimmt. Wer sich diesen Schritt sparen möchte, schaut sich Resistance an: Das rund 50 Zeilen große Skript bietet die Möglichkeit, Funktionen asynchron als Serie oder eben parallel ablaufen zu lassen.

Resistance - A light weight async flow controller

Für Funktionsblöcke, die also nacheinander abgearbeitet werden sollen, könnte folgender Code eingesetzt werden:

  • var testA = function(cb) {
  • setTimeout(function() {
  • console.log("Test A Complete");
  • cb();
  • }, 500);
  • };
  •  
  • R.series([
  • testA,
  • testA,
  • testA
  • ], function() {
  • console.log("Series Complete");
  • });

Der Vorteil ist, dass der ursprüngliche Code-Block unangetastet bleiben kann. Die Funktion "testA" wird durch das Snippet also nach 500, 1000 und 1500 Millisekunden ausgeführt. Danach greift die Callback-Funktion, die in diesem Fall einen Nachricht an die Konsole übermittelt. Global wird Resistance also mit dem Objekt "R" benutzt.
Das kleine Skript benötigt kein Framework und kann wieder bei GitHub heruntergeladen werden.

RSS-Feed abonnieren Bookmark bei Del.icio.us Bookmark bei Mister Wong