Deferred loop
function loop (o, fun) {
var begin = o.begin || 0;
var end = o.end;
var step = o.step || 1;
var ret;
return next(function () {
function _loop (i) {
if (i < end) {
ret = fun.call(this, i, step);
return call(_loop, i + step);
} else {
return ret;
}
}
return call(_loop, begin);
});
}
next(function () {
var hoge = 0;
return loop({end:50000, step:50}, function (n, step) {
for (var i = 0; i < step; i++) {
hoge += n+i;
}
return hoge;
});
}).
next(function (e) {
log(e);
log("end");
}).
error(function (e) {
});50000回のループを50ずつ実行する。