关闭

node events事件循环

标签: node学习总结
168人阅读 评论(0) 收藏 举报
分类:

引入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 不再受监听。");
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:187364次
    • 积分:4527
    • 等级:
    • 排名:第6510名
    • 原创:256篇
    • 转载:17篇
    • 译文:1篇
    • 评论:138条
    最新评论