var myArray = (function() {
var a = [],
l = 10000;
while (l--) {
a.push("foo#" + l);
}
return a;
}());
document.getElementById('foo').onclick = go;
function go() {
var cont = document.getElementById('cont'),
elem = document.createElement('div');
function handler(element, index) {
var el = elem.cloneNode(true);
el.appendChild(document.createTextNode(element));
cont.appendChild(el);
}
function _each(arr, fn /*function(element, index)*/ , limit /*items per pass*/ , callback) {
var count = 0,
len = arr.length;
function run() {
var d = limit;
while (d-- && len >= count) {
fn(arr[count], count++);
}
if (len > count) {
setTimeout(run, 1);
} else {
if (typeof callback === "function") {
callback();
}
}
}
run();
}
var start = new Date().getTime();
_each(myArray, handler, 10, function() {
alert('completed in ' + (new Date().getTime() - start) + "ms");
});
}