使用 async Node.js 简化Javascript代码

async Node.js

async 是Javascript的扩展库。它可以简化Node.js异步操作的书写,使代码更容易被读懂,而不是面对多层的括号发疯。

我们可以使用Node.js的包管理器npm直接安装它,在shell中输入:

或者 更改package.json:

然后运行 npm install. 安装完成后,在需要使用它的文件中加入:

series

使用series可以简化流程运行的异步函数。
现在构想一个这样的场景:
我需要执行一组动作,喝水 -> 吃饭 -> 打开电脑

通常的代码编写应该这样:

当异步调用超过两次嵌套,代码会变得不直观。使用async.series可以优化:

为了测试这个例子,我编写三个函数:

接下来,我们测试这些函数,在console中的显示是下面的代码:

这样看,我们达到了相同的效果。我们再测试出错的情况,将openMac函数更改成下面的代码:

再测试这两个函数:

我们能发现 series 的 result是一个数组。series中的callback被执行后,无论动作的结果是成功还是失败,都会在result中添加一个数据。另一方面,我们也可以通过result中元素的数量,判断 series 执行了几个函数。

waterfall

另一个有用函数是 waterfall 。它和 series 一样,可以简化流程运行的异步函数。不同点是它可以在流程执行的过程中传递参数。

例如,我需要在异步函数中返回一些饮品或食物的信息,我需要更改

然后添加:

每一次运行函数的回调结果都会传给下一个动作,最后的result与series不同,是最后一次执行动作callback中传递的值。运行测试结果为:

然后再来测试出错的情况,更改:

再运行的结果是:

总结

使用 async node.js 可以将复杂的逻辑表现的更直观。但如果逻辑只有一次回调,就不建议使用async了,我认为这会无意义的增加一些运行的成本。

本篇博客出自阿修罗道,转载请注明出处,禁止用于商业用途:http://blog.csdn.net/fansongy/article/details/42156109 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值