node中的异步编程思想

来源:互联网 发布:阿里云客服累吗 编辑:程序博客网 时间:2024/06/15 08:09
一.异步编程相关概念

从字面意思理解,程序中语句不再是从上往下顺序同步执行的编程就是所谓的异步编程了,之所以提出这个概念,很大程度上是因为同步编程阻塞后续代码的执行造成资源的浪费。对了,异步具体怎么实现的就没必要知道了,这些交给node底层的C/C++去吧


二.在异步编程中控制语句的执行顺序

虽然异步编程有它的好处,但也会给人带来一些困扰。目前应该有3种方法可以控制。
1.事件发布/订阅模式 
本质是将回调函数事件化。node中内嵌的event模块就是用于实现事件发布和订阅的,事件驱动编程也是node的核心概念,这个没什么好说的,在需要时 emit 就行。要注意的是1个事件最多只能绑定10个处理函数,想要绑定更多需要调用emitter.setMaxListener(0)或者设置为大于10的数
2.Promise/Deferred规范
在es6中有实现,比较简洁的是Promise/A规范,Promise是暴露给用户的接口,Defer用作后台处理,用法如下:
Promise.then(successFunc(){}, failFunc(){}, progressFunc(){})
3.流程控制库

通过第三方库实现,比较好用的有 async , step和 wind。在项目中我采用的是async库,series()、waterfall()、parallel()让我很是受用(0.0)


(PS:es3有两个异步函数,setTimeout和setInterval)

0 0