An async control-flow library for Node.js.
Easily parallel execution and error handling.
$ npm install node-block
varfs=require('fs');varblock=require('node-block').block;block(function(){fs.readFile('/path/to/file1','utf8',this.async('d1'));fs.readFile('/path/to/file2','utf8',this.async('d2'));},function(){varstr=this.data.d1+this.data.d2;console.log(str);})();Function name is cat and fin.
varfs=require('fs');varblock=require('node-block').block;block(function(){fs.readFile('/path/to/file1','utf8',this.async('d1'));fs.readFile('/path/to/file2','utf8',this.async('d2'));},function(){this.data.d3=this.data.d1+this.data.d2;},functioncat(e){// catchconsole.log(e);throwe;},functionfin(){// finallyconsole.log('fin');// always run})();call this.end() with return.
varfs=require('fs');varblock=require('node-block').block;block(function(){if(true){returnthis.end();// called with return}},function(){// not run here.},functioncat(e){// catch// when errorless, not run here.},functionfin(){// finallyconsole.log('fin');// always run})();sample() is called after fin().
varfs=require('fs');varblock=require('node-block').block;block(function(){fs.readFile('/path/to/file1','utf8',this.async('d1'));},functionfin(){console.log('fin');})(sample);functionsample(err){if(err)throwerr;console.log(this.data.d1);}varfs=require('fs');varblock=require('node-block').block;block(function(){fs.readFile('/path/to/file1','utf8',this.async('d1'));fs.readFile('/path/to/file2','utf8',this.async('d2'));},function(){fs.readFile('/path/to/file3','utf8',this.async('d3'));block(function(){fs.readFile('/path/to/file4','utf8',this.async('e1'));fs.readFile('/path/to/file5','utf8',this.async('e2'));},function(){fs.readFile('/path/to/file6','utf8',this.async('e3'));})(this.async('d4'));},function(){varstr=this.data.d1+this.data.d2+this.data.d3+this.data.d4.e1+this.data.d4.e2+this.data.d4.e3;console.log(str);})();varblock=require('node-block').block;block(function(){varcb1=this.async('d1');setTimeout(function(){try{cb1(null,'abc');}catch(e){cb1(e);}},1000);},function(){varstr=this.data.d1;console.log(str);// abc})();The MIT License