201327Mai

Lazy.js: Utilities für JavaScript mit Deferred Execution

Für die Arbeit mit unterschiedlichen Datenstrukturen in JavaScript können Hilfsbibliotheken wie Underscore.js oder Lo-Dash sehr nützlich sein. Gerade wenn es sich um die Verarbeitung von größeren JSON-Datensätzen handelt, dürften die Funktionen der genannten Bibliotheken interessant sein, mit denen sich Arrays, Objekte und Collections schneller verarbeiten lassen.
In diesem Zusammenhang wurde auch das Skript Lazy.js entwickelt, das ähnlich wie Underscore.js arbeitet, aber Sequenzen erzeugt und damit eine verzögerte Ausführung (Deferred Execution) ermöglicht.

Lazy.js: Utilities für JavaScript mit Deferred Execution

Der Vorteil von Lazy.js liegt also darin, dass Iterationen erst beim Aufruf der each-Methode ausgeführt werden und keine Zwischen-Arrays erzeugt werden. Ein Beispiel, bei dem die ersten 10 geraden Quadratzahlen eines Arrays mit 1000 Ganzzahlen ausgegeben werden:

  • function square(x) { return x * x; }
  • function isEven(x) { return x % 2 === 0; }
  •  
  • var arr = Lazy.range(1000).toArray();
  • var result = Lazy(arr).map(square).filter(isEven).take(100);

Auf der Seite finden sich noch weitere Beispiele, bei denen unter Anderem eindeutige Zufallszahlen erzeugt werden oder die Maus-Koordinaten direkt als Sequenz verarbeitet werden.
Der Quellcode zu Lazy.js findet sich wieder bei GitHub.