#node-tasker An exercise on Promises and flows (simulating Grunt tasks on a node server)
##Usage
tasker.registerTask('test1', function(){
console.log('test1');
});
tasker.registerTask('test2', function(resolve, reject){
console.log('test2');
});
tasker.registerTask('test3', ['test2', 'test1', 'test4', 'test5', 'abort1', 'test2']);
tasker.registerTask('abort1', 'A task to stop the flow', function(){
console.log('Flow stopped');
return false; //return false === stop the flow
});
tasker.registerTask('test5', ['test2', 'test1']);
tasker.registerTask('test4', 'This is task 4', function(){
console.log('test4');
});
tasker.runTask('test3');
/* Console output
test2
test1
test4
test2
test1
Flow stopped
"abort1" task aborted
*/
##To do
- Async tasks
- Forced tasks
- Nonlinear flow (Promise.all instead of Promise.then)
- Dependency Injection
/*
dependency injection
http://stackoverflow.com/questions/20058391/javascript-dependency-injection
var Injector = {
dependencies: {},
add : function(qualifier, obj){
this.dependencies[qualifier] = obj;
},
get : function(func){
var obj = new func;
var dependencies = this.resolveDependencies(func);
func.apply(obj, dependencies);
return obj;
},
resolveDependencies : function(func) {
var args = this.getArguments(func);
var dependencies = [];
for ( var i = 0; i < args.length; i++) {
dependencies.push(this.dependencies[args[i]]);
}
return dependencies;
},
getArguments : function(func) {
//This regex is from require.js
var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
var args = func.toString().match(FN_ARGS)[1].split(',');
return args;
}
};
*/