1.所有能触发事件的对象都是 EventEmitter
类的实例。这些对象有一个 eventEmitter.on()
函数,用于将一个或多个函数绑定到命名事件上。还有一个.emit()函数用于chu'fa触发监听器。
2.this,指向事件绑定者。用箭头函数的话,this指向就为空了。
3.当绑定多个函数时,本质是同步执行的,当里面含有异步函数时,就会切换到异步模式。
4.once()函数可注册最多只监听一次的函数。
5.on('error'),监听错误事件,避免出错直接退出node进程。
EventEmitter类 const EventEmitter = require('events'); // 所有事件触发对象的实例,就是所有对象都有下面这些属性和方法
A:有newListeren事件,在添加监听器到内部监听器数组时触发的一个事件,就是.on()事件会触发,执行顺序在监听器之前。只能用once来监听
B:removeListener事件,当移除监听器时触发,接收2个参数,事件名字和方法名字。
C:defaultMaxListeners属性,一个事件默认监听数量,(超过会生效,但是有警告),
实例相关的方法:getMaxListeners()//得到最大监听数量。setMaxListeners(n)设置最大监听器数量,当为0表示不限制
包含的方法:
1.on()添加一个监听器
2.addListener().和上面一样,别名而已。
3.onec(),某个事件只执行一次。
4.emit() 事件触发器。
5.eventNames()返回已注册的事件名数组。
6.listenerCount(eventName) 返回名字为eventName监听器的数量。
7.listeners(eventName)返回监听器方法的副本,得到一个函数组成的数组。
8.off(eventName,fun), // 删除方法的别名
9.removeListener(eventName,fun)//移除某个监听器。
10,removeAllListeners([eventName]) // 删除所有的监听器.
11.prependListener(eventName,fun) //添加事件到监听器数组的开头。
12.prependOnceListener(eventName,fun) // 添加单次事件到监听器数组的开头。
13.rawListeners() //返回 eventName
事件的监听器数组的拷贝,包括封装的监听器(例如由 .once()
创建的。
事件触发器,类似于发布订阅模式。只是做的更细,提供的api功能更多,出于内存大小的控制也对监听器数量做了个经验值大小限制。