【工具】推荐一个自己写的node.js控制流程工具 Step.js
Node.js 控制流程工具,解决回调嵌套层次过多等问题。适用于读文件、查询数据库等回调函数相互依赖,或者分别获取内容最后组合数据返回等应用情景。
虽然已经有Async和step工具,但总感觉用起来需要写太多的代码,不是很方便,不符合write less,do more的设计哲学,所以自己忍不住写了一个。
工具托管在github上了:https://github.com/myworld4059/Step.js
欢迎指出不足。
11 回复
处理回调嵌套eventproxy就不错,有什么不一样么
嗯, 没感觉比其它库省很多代码啊
能超越 eventproxy ?
eventproxy 比q, async的优势在哪呢?
主要是有this.stop()
,this.end()
和this.index
三个特征,具体见文档。thx
下面是 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 );
吓了我一跳,我以为那个step.js是你写的呢
额 这个Step.js是我写的 :)
@myworld4059 好的,研究下
http://www.silverna.org/blog/?p=279
这篇文章介绍的when.js的原理和实现,看完了 自己也能写个简单的流程控制模块