• 欢迎大家来访,希望积极评论哟
  • 网站更名"小鸟博客"。。。
  • 全站启用https,哇咔咔咔咔
  •    4年前 (2015-07-10)  Node.JS |   抢沙发  79 
    文章评分 1 次,平均分 5.0

    以前在阅读Async JavaScript Build More Responsive Apps with Less Code一书的时候,认识了Async库!开始的时候,没有体会async的魅力,直到最近用NodeJs写网站的时候,才发现,如果不用async,写 出来的代码简直没法看。所以在中后期,我大量使用了Parallel和waterfull,但是写出来的代码仍旧比较凌乱,最近才发现async的一个强 大的API,async.auto!我觉得,这个才是async的强大之处!

    很多时候,你逻辑里面, 既有waterfull的也有parallel的,那个就要写至少2个async函数调用,复杂的情况下,可能更多,但是async.auto的强大是在 于,你定义好相互之间的dependencies,他来帮你决定用parallel还是waterfull。

    看一个例子:

    async.auto接受 一个对象,即键值对,其每一个属性,就是一个你要执行的函数逻辑,而依赖关系通过属性名指定。上面代码的意思是,func1和func2相互独立,没有依 赖,func3依赖于func2,func4依赖于func1,func3(其实也间接依赖于func2)。那么,根据人脑判断,func1和func2 可以并行执行,func3可以和func1并行但是需要等待func2,func4最后执行。如果不用async.auto的话,差不多这样吧:

    相比之 下,async.auto代码更加简洁,而且将来要多加一个dependency也简单。另外async.auto还有一个特色,就是每一个 callback都会传入一个results参数,让你得到你每个函数执行的结果(当然,如果你执行的之后,那个函数还没执行,就不会有结果),你不用自 己显式地把结果存入results对象,async.auto会帮你做这件事情。上面那段代码执行的结果是:

    首先,你调用callback,传入2个result,async.auto帮你变成了一个数组,func1: ['abc', 'bbc']。

    其次,func2的结果自动放入了results里面,func2: {puncha: 'during'}

    这个应该能满足大部分需求了!

     

    除特别注明外,本站所有文章均为小鸟博客原创,转载请注明出处来自https://www.cba89.com/study/nodejs/187

    发表评论

    表情 格式

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册