event
接受数据的时候,node 是以流的形式发送上来的,则会触发 da ta 事件用来接受数据。
event事件在node环境中也集成了很多的方法,对外值暴露一个方法EventEmitter
event.EventEmitter作用只有两个:事件的监听和事件的接受
官方建议对一个事件的监听最大不要超过10个,当然这个也是可以修改的。life.setMaxListeners(11)
life.emit() 有个返回值为真就说明有监听
fs
HTTP
Get就是对 request 的封装,二者使用基本上差不多,都可以从后台发起一个http请求,从而可以获取远程的资源甚至是更新和同步远程的资源。
request本质上是返回一个clientRequest的实例,这个实例是一个可写的流,如果采用post请求上传一个文件,那么这个文件就会写入这个流当中。
Get就是对 request 的封装,二者使用基本上差不多,都可以从后台发起一个http请求,从而可以获取远程的资源甚至是更新和同步远程的资源。
request本质上是返回一个clientRequest的实例,这个实例是一个可写的流,如果采用post请求上传一个文件,那么这个文件就会写入这个流当中。
![node2 - Anikin - Anikin node2 - Anikin - Anikin](http://img1.ph.126.net/VMh2-g3As188dYlLrrBtHw==/6632038634466736273.png)
接受数据的时候,node 是以流的形式发送上来的,则会触发 da
Promise
测试: 在浏览器端兼容到 ie9 所以pc基本可以不用考虑
只能是三种状态:未完成 pending 已完成 fulfilled 已失败 rejectedthen 必须返回一个对象 成功的回调或者或者失败的回调
使用场景: 复杂异步编程异步处理机制: 回调 事件机制(事件监听,订阅者观察者模式)
promise: 已同步方式实现异步编程,规范的链式写法,就是一个对象而已
每一个then方法必须等到上一个promise执行完成之后再执行,可以为多个异步操作部署一个回调函数,为多个回调函数中抛出的错误指定统一的处理方法等等使用场景:复杂异步编程,比较简单的可以使用函数回调,没必要使用异步对象。【 代码实例 】
常用的bluebird Api, 参考
-
流控制api
de >then de> (单一异步或同步), de >Promise.props de> (有限个数的并行), de >Promise.all de> , de >Prommise.map de> (不定个数的并行) -
数据库api
de >Promise.using de> (访问数据库,自动释放连接) -
其他
de >Promise.resolve() de> (便于传递值), de >catch de> (捕获异常)