曲振飞的个人博客

专注于Web全栈开发、APP设计、网站建设

当前位置 : 主页 > 后端开发 > Node.js知识详解之事件模块小插曲

Node.js知识详解之事件模块小插曲

时间:2016-10-13 22:43:06 栏目:后端开发 作者:曲振飞 点击: 423

events模块是NodeJS基础及重要的模块。许多其他模块用它来围绕着事件架构功能。events模块只对外暴露一个event 对象 eventEmitter.对象有两个方法,event.emit--事件发射;event.listener 事件监听

可最多向一个事件添加十个监听(回调方法)

//加载eventEmitter对象
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
// addEventListener
life.on('事件名',function(who) { //加上一个事件监听,使用on等同于addEventListerner
    console.log('给 ' + who + ' 倒水1。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水2。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水3。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水4。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水5。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水6。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水7。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水8。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水9。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水10。。。');
});
life.on('事件名',function(who) {
    console.log('给 ' + who + ' 倒水11。。。');
});

超过10个会爆出警告,官方提醒超出10个会造成内存泄漏

blob.png

可以使用life.setMaxListeners(11);函数修改 最大值,就不会报警告

blob.png

通过事件返回的对象,查看事件是否为监听,true为已监听,false为未监听

var events1 = life.emit('事件名','张三');
var events2 = life.emit('事件名2','张三');
var events3 = life.emit('事件名3','张三');
console.log(events1);
console.log(events2);
console.log(events3);

blob.png

移除一个监听函数  removeListener('事件名',event001);

移除指定事件所有监听函数  life.removeAllListeners('事件名');  如果不指定事件名 移除所有

获取监听函数的个数 life.listeners('事件名').length

或者使用 EventEmitter.listenerCount(life,'事件名')


关键字: Nodejs事件

关于站长

曲振飞,一个热忠、从事于互联网的90后青年.专注于网站建站、网站设计及优化.以用户体验、WEB标准为主旨,将网站的整体设计与网页设计的相关原理紧密结合.