Simple and clean asynchronous/nonblocking processing system JSDeferred (is like MochiKit and with some extension) with jQuery supports.
jQuery supports: overwrite ajax functions get, post and getJSON to return Deferred object (no arguments change).
Collect some asynchronous resources by ajax.
parallel([ $.get("a.html").next(function (data) { return data.match(/([^<]+)<\/title>/); }), $.get("b.txt" ).next(function (data) { return data.match(/##\s*([^<]+)\s*##/); }), $.getJSON("c.json").next(function (data) { return data.title; }) ]).next(function (values) { print("Titles "+values.join(", ")); });
Divided loop for non stress browsing. When long time processing is required, it is bad that simply using only for loop because it stops browser appearance. Deferred resolves it with bare minimum of effort.
for
loop({begin: 1, end:100, step:10}, function (n, o) { print(["Processing divided loop:n=", n].join("")); for (var i = 0; i < o.step; i++) { var j = n + i; print(j); } });
Like tail call code. If you are habituated to functional programming, this syntax may be familiar to you.
next(function () { function pow (x, n) { function _pow (n, r) { if (n == 0) return r; return call(_pow, n - 1, x * r); } return call(_pow, n, 1); } return call(pow, 2, 10); }). next(function (r) { log([r, "end"]); });
See more samples!