Non Blocking JavaScript

JavaScript ist toll. Ja. Und ist heute aus der Webentwicklung nicht mehr wegzudenken. Allerdings hat Javascript einen kleinen Schwachpunkt: Es gibt keine Nebenläufigkeit. JavaScript wird linear ausgeführt*.

Will man beispielsweise länger dauernde Operationen in JavaScript realisieren, gerät man schnell an den Punkt, dass der Browser nicht reagiert, blockiert, träge wird. Eine Lösung dies zu umgehen gibt es: Die Algorithmen dahingehend ändern, nur kleine Teile des Problems auf einmal zu berechnen.

Beispiel: Alle Zahlen von 0 bis 100000 zusammenzählen.

var sum = 0;
for (var i = 0; i < 1000000; i++) {
    sum += i;
}

Diese Schleife blockiert und das Script reagiert träge bzw. gar nicht mehr. Damit man nun das Rad nicht neu erfinden muss, hat Thomas Peri eine sehr interessante JavaScript-Bibliothek geschrieben: Clumpy.

Clumpy versucht eine Pseudonebenläufigkeit in JavaScript zu realisieren, und das auf eine sehr elegante Art.

Beispiel: Die obere Schleife mit dem Clumpy-Way-Of-Life:

var sum = 0;
clumpy.for_loop(
    function () { i = 0; },
    function () { return i < 100000; },
    function () { i++; },
    function () {
        sum += i;
    }
);

Clumpy kann aber noch viel mehr: Verschachtelung von Schleifen, Verkettung, saubere Notification über den Status … etc … I am impressed my dear!

* Die asynchronen HTTP-Requests werden über, nun ja, esoterische Mittel realisiert, damit eine Anfrage nicht blockiert.

Speichern, anderen zeigen, genießen:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Pownce
  • Technorati
  • MisterWong

Geschrieben am Mittwoch, 02. Dezember 2009, von Alex, abgelegt unter Allgemein

Tags: , , ,

Andere Beiträge mit ähnlichen Inhalten, die Dich evtl. auch interessieren könnten:

Eine Antwort hinterlassen