Skip to content

Instantly share code, notes, and snippets.

@fomkin
Created May 31, 2016 14:59
Show Gist options
  • Save fomkin/45e7c10759cc0d7b35366727e9220fd7 to your computer and use it in GitHub Desktop.
Save fomkin/45e7c10759cc0d7b35366727e9220fd7 to your computer and use it in GitHub Desktop.
function Fsm(states) {
var self = this;
function onTransition(state, data) {
self.state = state;
self.data = data;
states[state](data, onTransition);
}
onTransition(Object.getOwnPropertyNames(states)[0], null);
}
var fsm = new Fsm({
'first' : function(data, callback) { callback('second', 2) },
'second' : function(data, callback) { callback('print', data + 3) },
'print' : function(data, callback) { console.log(data); },
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment