【工具】推荐一个自己写的node.js控制流程工具 Step.js
发布于 1年前 作者 yangjiePro 1715 次浏览

Node.js 控制流程工具,解决回调嵌套层次过多等问题。适用于读文件、查询数据库等回调函数相互依赖,或者分别获取内容最后组合数据返回等应用情景。

虽然已经有Async和step工具,但总感觉用起来需要写太多的代码,不是很方便,不符合write less,do more的设计哲学,所以自己忍不住写了一个。

工具托管在github上了:https://github.com/myworld4059/Step.js

欢迎指出不足。

11 回复

处理回调嵌套eventproxy就不错,有什么不一样么

嗯, 没感觉比其它库省很多代码啊

能超越 eventproxy ?

eventproxy 比q, async的优势在哪呢?

我自己的体会,关于解决callback嵌套,异步写法的问题, q, async 完全足够了啊, EventProxy主要面向的场景是什么?

主要是有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是我写的 :)

http://www.silverna.org/blog/?p=279

这篇文章介绍的when.js的原理和实现,看完了 自己也能写个简单的流程控制模块

回到顶部