第一 Events模块概述
Events模块是Node对“发布/订阅”模式(publish/subscribe)的实现。一个对象通过这个模块,向另一个对象传递消息。
Node中的Event模块仅仅提供了一个对象: EventEmitter, EventEmitter 的核心就是事件触发与事件监听器功能的封装。
获取EventEmitter对象
//51testing
//引用模块events, 点语法获取到EventEmitter
varEventEmitter =
require(
'events').EventEmitter;
//初始化一个对象, 这个实例就是消息中心。
varemitter =
newEventEmitter;
第二 EventEmitter 实例对象的方法
2.1emitter.on(eventName, listener), 监听事件,如果触发就调用回调函数
1. eventName
<String>|
<Symbol>:
事件名称
,
后边可以跟上函数
;
2. listener
<Function>:
回调函数
;
2.2 emitter.emit(eventName[,...args]), 根据eventName发送通知, 触发事件, 第一个参数为事件名称, 其余的参数会依次传入回调函数
2.3 emitter.once(eventName, listener), 类似on方法, 但回调函数只是执行一次
2.4emitter.addListener(eventName, listener)类似于emitter.on(eventName, listener)
2.5emitter.removeListener(eventName, listener), 移除监听
详细见实例代码:
varEventEmitter = require('events').EventEmitter;
var emitter =new EventEmitter();
//定义一个函数
var removeFun= function(){
console.log('输出结果');
}
//以fun名称监听removeFun
emitter.on('fun',removeFun);
//每个30毫秒触发一次回调函数
setInterval(function(){
emitter.emit('fun');
}, 30);
//200毫秒以后触发回调函数
setTimeout(function(){
emitter.removeListener('fun',removeFun);
}, 200);
打印结果
$ node 5removeListener.js
输出结果
输出结果
输出结果
输出结果
输出结果
#光标停止