引入event模块:
/*引入模块方式一*/
//引入events模块
var events = require('events');
//创建eventEmitter
var eventEmitter = new events.EventEmitter();
/*引入模块方式二*/
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.on('some_event',function(){
console.log('some_event事件触发');
});
setTimeout(function(){
event.emit('some_event');
},1000);
一个node事件循环的入门例子:
// 引入events模块
var events = require("events");
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
//绑定事件及事件的处理程序
var connectHandler = function connected () {
console.log('连接成功。');
//触发事件
eventEmitter.emit('data_received');
}
//绑定事件及事件的处理程序
eventEmitter.on('connection',connectHandler);
//使用匿名函数绑定data_received事件
eventEmitter.on('data_received',function () {
console.log('数据接收成功。');
});
//触发connection事件
eventEmitter.emit('connection');
console.log('程序执行完毕。');
打印结果:
连接成功。
数据接收成功。
程序执行完毕
参数的传递:
/*event参数*/
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.on('someEvent',function(arg1,arg2){
console.log('listener1',arg1,arg2);
});
event.on('someEvent', function(arg1, arg2) {
console.log('listener2', arg1, arg2);
});
event.emit('someEvent','参数1','参数2');
// addListener
var events = require('events');
var eventEmitter = new events.EventEmitter();
// 监听器 #1
var listener1 = function listener1() {
console.log('监听器 listener1 执行。');
}
// 监听器 #2
var listener2 = function listener2() {
console.log('监听器 listener2 执行。');
}
// 绑定 connection 事件,处理函数为 listener1
eventEmitter.addListener('connection',listener1);
// 绑定 connection 事件,处理函数为 listener2
eventEmitter.on('connection', listener2);
var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");
// 处理 connection 事件
eventEmitter.emit('connection');
// 移除监绑定的 listener1 函数
eventEmitter.removeListener('connection', listener1);
console.log("listener1 不再受监听。");