Skip to content

Instantly share code, notes, and snippets.

@yoshuawuyts
Last active August 29, 2015 14:16
Show Gist options
  • Save yoshuawuyts/f8dfdd1644e8829e428c to your computer and use it in GitHub Desktop.
Save yoshuawuyts/f8dfdd1644e8829e428c to your computer and use it in GitHub Desktop.
// stepper.js
// 2015 cloudbender
// iojs 1.0.2
// generator works and steps itself,
// from the event loop;
process.on( 'exit', function(){console.log('bye');} );
(function main(){
// a generator constructor
function* stepper(object) {
yield setImmediate( function(me,ob){ ob.status='reset'; console.log(ob); me.next(); }, this,object );
yield setImmediate( function(me,ob){ ob.status='step1'; console.log(ob); me.next(); }, this,object );
yield setImmediate( function(me,ob){ ob.status='step2'; console.log(ob); me.next(); }, this,object );
yield setImmediate( function(me,ob){ ob.status='stepN'; console.log(ob); me.next(); }, this,object );
yield setImmediate( function(me,ob){ ob.status='ready'; console.log(ob); me.next(); }, this,object );
}
// create some objects
var object1 = {'name':'object 1', 'status':'created'};
var object2 = {'name':'object 2', 'status':'created'};
var object3 = {'name':'object 3', 'status':'created'};
// pass each object into a new stepper constructor
// start each new stepper
new stepper(object1).next();
new stepper(object2).next();
new stepper(object3).next();
console.log('main completed');
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment