首页 > 代码库 > node概念笔记之eventemitter
node概念笔记之eventemitter
1、产生事件分发的对象都是eventemitter的实例
2、events模块只提供一个对象events.EventEmitter,核心就是事件触发和事件监听功能的封装
引入方式
//引入events模块var events = require(‘events‘);//创建eventEmitter对象var eventEmitter = new events.EventEmitter();
EventEmitter对象如果在实例化时发生错误,会触发error事件,当添加新的监听器时newListener事件触发,移除时removeListener事件被触发
//event.js文件var EventEmitter = require(‘events‘).EventEmitter;var event = new EventEemitter();event.on(‘some_event‘,function(){ console.log(‘some_event 事件触发‘) });setTimeOut(function(){ event.emit(‘some_event‘);},1000)
一秒后触发some_event,然后监听到这个事件的分发
支持若干事件监听器,顺序执行,事件参数作为会掉函数的参数传递
var events = require(‘events‘);var emitter = new events.EventEmitter();emitter.on(‘someEvent‘,function(arg1,arg2){ console.log(‘listener1‘,arg1,arg2); });emitter.on(‘someEvent‘,function(arg1,arg2){ console.log(‘listener2‘,arg1,arg2); });emitter.emit(‘someEvent‘,arg1,arg2);
下面是是EventEmitter的属性介绍
1、addListener(event,listener)
2、on(event,listener)//回调函数
3、once,单次事件监听,触发后立即解除
4、removeListener
5、removeAllListeners
6、setMaxListeners
7、listeners返回执行事件的监听器数组
8、emit,按参数执行每个监听器
实例
var events = require(‘events‘);var eventEmitter = new events.EventEmitter();//监听器#1var listener1 = function listener1(){ console.log(‘监听器Listener1执行‘)}//监听器#2var listener2 = function listener2(){ console.log(‘监听器Listener2执行‘)}eventEmitter.addListener(‘connect‘,listener1);eventEmitter.addListener(‘connect‘,listener2);var eventListeners = require(‘events‘).EventEmitter.EventEmitterCount(eventEmitter,‘connect‘);console.log(evnetListeners+‘个监听器监听连接事件‘);eventEmitter.emit(‘connect‘);// 移除监绑定的 listener1 函数eventEmitter.removeListener(‘connection‘, listener1);console.log("listener1 不再受监听。");// 触发连接事件eventEmitter.emit(‘connection‘);eventListeners = require(‘events‘).EventEmitter.listenerCount(eventEmitter,‘connection‘);console.log(eventListeners + " 个监听器监听连接事件。");console.log("程序执行完毕。");
error事件
继承EventEmitter
node概念笔记之eventemitter
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。