Node.js 异步流程控制库 eventr 介绍
发布于 10 年前 作者 alsotang 3707 次浏览 最后一次编辑是 8 年前

最近写了个 node 的异步流程控制库,名字叫 eventr。

github 的地址在:https://github.com/alsotang/eventr

这个库利用事件的思维来解决 callback hell 的问题,使用的方式跟 eventproxy 很像。只不过在实际的工作中,我遇到了 eventproxy 在对付不定参数的事件组时的不足,所以主要的 on 接口采用了接受事件数组的方式,并且回调函数返回一个以各事件为 property 的hash。

另外,这个库的实现非常简单,由于在后端,我们很少使用 once,也很少对事件进行解绑。所以这些我都倾向于不去实现,而是交给垃圾回收。

这样一来 eventr 的代码可以说非常适合新手进行入门学习。

以下是一段示例代码:用 fetchurl 函数去抓取 google 和 yahoo 的页面,并分别抛出事件,然后在 on 事件中对他们的结果进行处理。接口还是比较简单的。

it('should work with event array', function (done) {
  var et = new Eventr();
  fetchurl('google', function (err, content) {
    et.emit('page1', content);
  });
  fetchurl('yahoo', function (err, content) {
    et.emit('page2', content);
  });
  // edata is a hash
  et.on(['page1', 'page2'], function (edata) {
    edata.page1.should.equal('pagecontentgoogle');
    edata.page2.should.equal('pagecontentyahoo');
    done();
  });
});

更多的示例可以到 https://github.com/alsotang/eventr 来查看,文档也是比较清晰的。:)

2 回复

赞,一直用async的飘过

回到顶部