学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引用出去?前后通吃的插件?