学nodejs也算有几个月了,凡是玩node的童鞋都应该感受到这个google弄出来的语言的强大,比如异步IO,所有方法异步,运行快,单进程等等……

不过伴随而来的就是烦人的callback了,那种三角形的代码让人感觉到无法按照传统编程20行一个function的规则继续前进,于是乎发现了async 这个Node库

url: https://github.com/caolan/async/

正如官方给的例子:

async.parallel([
    function(){ ... }, //fun1
    function(){ ... }  //fun2
], callback);

可以在 fun1,fun2 多个fun调用完成后,再调用 callback,要知道node是异步的,按照正常的写法 fun1,fun2还没返回结果,就调用callback了,不过还好我没出过这个错,主要是riemann童鞋之前再三叮嘱~~

这篇文章不是为了说async多好多好,或者怎么用怎么用的demo的,毕竟官方给的例子其实很好了,说得也比较详细,就是E文多了点。

真正的主体 parallel到底做了什么 can do it?

 

到node_modules/async/lib/async.js 感觉基本包含了全部async源码

首先用了个闭包

(function () {

    var async = {};

    // global on the server, window in the browser
    var root = this,
        previous_async = root.async;

    if (typeof module !== 'undefined' && module.exports) {
        module.exports = async;
    }
    else {
        root.async = async;
    }
     
     async.xxxx= fun(){}
     ……
}());
从主代码来看主要是 吧async定义成对象然后引入出去,值得注意的是 除了Nodejs 的方式吧对象 async引入出去 还判断了如果不是Node是前端?采用this引用出去?前后通吃的插件?


Posted on 2012-08-14 15:36  Darren.Ouyang  阅读(1368)  评论(0)    收藏  举报