Node.js 控制流程工具,解决回调嵌套层次过多等问题。适用于读文件、查询数据库等回调函数相互依赖,或者分别获取内容最后组合数据返回等应用情景。
虽然已经有Async和step工具,但总感觉用起来需要写太多的代码,不是很方便,不符合write less,do more的设计哲学,所以自己忍不住写了一个。
工具托管在github上了:https://github.com/myworld4059/Step.js
欢迎指出不足。
11 回复
下面是 eventproxy 一个例子:
var EventProxy = require('./eventproxy');
var proxy = new EventProxy();
var add= function (v1, v2, v3){
console.log(v1+v2+v3+'');
};
proxy.assign("v1", "v2", "v3", add);
clinet1.get("key1", function (err, data) {
//do something
proxy.trigger("v1", data);
});
clinet2.get("data", function (err, data) {
//do something
proxy.trigger("v2", data);
});
clinet3.get("l10n", function (err, data) {
//do something
proxy.trigger("v3", data);
});
用 Step.js 写则是:
var Step = require('Step.js');
Step.Assem(function(){
this.step(v1);
},function(){
this.step(v2);
},function(){
this.step(v3);
},function(v){
console.log(v[0]+v[1]+v[2]+'');
});
省去了为每一个异步结果“v1”“v2”“v3”命名的繁琐。同时还可以传给Step一个函数数组:
var func_ary = [function(){
this.step(v1);
},function(){
this.step(v2);
},function(){
this.step(v3);
},function(v){
console.log(v[0]+v[1]+v[2]+'');
}];
Step.Assem(func_ary );