nodejs系列: 事件模块 javascript
events是Nodejs最重要的模块,原因是Node.js本身架构就是基于事件模型的 ; events模块不仅用于用户代码与Node.js下层事件循环的交互;还几乎被所有的模块依赖。
下面介绍一下NODE的事件模块的一些常用对象:
1 events.EventEmitter
EventEmitter的核心就是事件发射与事件监听器功能的封装。EventEmitter的每个事件由一个事件或若干个参数组成,事件名是一个字符串。对于每个事件,EventEmitter支持若干个事件监听器。当事件发射时,注册到这个事件的事件监听器被依次调用,事件处理结果参数作为回调函数的参数传递。
常用API的方法介绍:
1 EventEmitter.on(event,listener)为指定事件注册一个监听器,接受一个字符串event和一个回调函数listener
2 EventEmitter.emit(event,[arg1],[arg2]....) 触发event事件,传递若干可选参数到事件监听器的参数表
3 EventEmitter.once(event,listener) 为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器。
4 EventEmitter.removeListener(event,listener)移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。
5 EventEmitter.removeAllListeners([event]) 移除所有事件的所有监听器,如果指定event,则移除指定事件的所有监听器。
实例说明:
var events = require('events'); var eventEmitter = new events.EventEmitter(); eventEmitter.on('click',function(param1,param2){ console.log('click method 1 = ', param1, param2); }); eventEmitter.on('click',function(){ console.log('click method 2 ') }); eventEmitter.emit('click','hello','world');
两个注册的事件 都被执行了,且按照注册顺序执行。
我们在处理事件的时候 有时候需要抛出错误 以便提醒 出错了, 我们可用使用 下面的抛出语句。
var events=require('events'); var emitter=new events.EventEmitter(); emitter.emit('error');
例子2:
//引用事件模块 var EventEmitter = require('events').EventEmitter; //创建事件对象 var event = new EventEmitter(); //注册事件及 编写具体执行的代码序列 event.on('doing',function(){ console.log('doing 事件 '); }); //5秒后触发事件 setTimeout(function(){ event.emit('doing'); },5000);
此实例运行结果:
5秒后 触发事件 ‘doing' 打印出 'doing 事件'
下一篇 开始介绍 模块封装
如有疑问 请留言 欢迎提供建议
评论已有 0 条