asyncLopp
by Jose Montero
JavaScript
function asyncLoop(iterations, func, callback) {
var index = 0;
var done = false;
var loop = {
next: function() {
if (done) {
return;
}
if (index < iterations) {
index++;
func(loop);
} else {
done = true;
callback();
}
},
iteration: function() {
return index - 1;
},
break: function() {
done = true;
callback();
}
};
loop.next();
return loop;
}
function someFunction(a, b, callback) {
setTimeout(function(){
document.write('Iteration ' +(b + (a - 1)) + ' <br>');
loop();
},1000);
callback();
}
var iterations = 2;
asyncLoop(iterations, function(loop) {
someFunction(iterations, loop.iteration(), function(result) {
// log the iteration
console.log(loop.iteration());
// Okay, for cycle could continue
loop.next();
})},
function(){console.log('cycle ended')}
);