Node.js基础知识1.4

EventEmitter类

  1. events模块只提供一个对象event.Eventter.
  2. EventEmitter 的核心就是事件触发与事件监听器功能的封装。
  3. Node.js中的所有的异步I/O操作在完成时都会发送一个事件到事件队列

创建实例

// 导入核心事件库
var events = require('events');

//创建事件对象
var myEvent = new events.EventEmitter();

  • EventEmitter的简单用法:
    绑定一个事件在控制台打印信息

on 函数用于绑定事件函数,emit 属性用于触发一个事件

var events = require('events');
var myEmitter = new events.EventEmitter();

//myEmitter.on(arg1,arg2),其中arg1是事件的名称,args是函数
myEmitter.on('show',function(message)){
  console.log(message);
}

//提交事件
myEmitter.emit('show','the event was emitted');
  • 案例
//事件
var events = require('events');
/*
   导入工具库
*/
var util = require('util');

// 创建Person对象
var Person = function(name){
   this.name = name;
}

// Person类继承事件类
util.inherits(Person,events.EventEmitter);


//实例化对象
var san = new Person('san');
var jam = new Person('jam');
var tom = new Person('tom');

//创建对象数组
var per = [san,jam,tom];


//循环输出
//对象数组绑定事件,控制台输出信息
per.forEach(function(per){
    per.on("speak",function(msg){
         console.log(per.name+"speak:"+msg);
    })
})

// 事件提交
san.emit("speak","Hello");
jam.emit("speak"," Word !");

输出信息
在这里插入图片描述

事件监听器

  • 常用方法:
    1.addListener(event, listener)
    为指定事件添加一个监听器到监听器数组的尾部。
    2 on(event, listener)
    为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。

server.on(‘connection’, function (stream) {
console.log(‘someone connected!’);
});

  1. listenerCount(emitter, event)
    返回指定事件的监听器数量。
    4.removeListener(event, listener)
    移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。
  • 案例

var event = require('events');

// 创建eventEmitter对象
var eventEmitter = new event.EventEmitter();

// 监听器 #1
var listener1 = function listener1() {
    console.log('监听器 listener1 执行。');
 }
 
 // 监听器 #2
 var listener2 = function listener2() {
   console.log('监听器 listener2 执行。');
 }

//  绑定事件
eventEmitter.on('connection',listener1);
eventEmitter.on('connection',listener2);

/*  
  listenerCount(emitter, event)
 返回指定事件的监听器数量。
*/

//监听connection事件
var eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners+' 个监听器监听连接事件');

// 处理 connection 事件 
eventEmitter.emit('connection');

// 移除listener2
eventEmitter.removeListener('connection',listener2);
console.log('listener2事件移除');
eventEmitter.emit('connection');

eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners+' 个监听器监听连接事件');

console.log('执行完毕');


  • eventEmitter.on()与eventEmitter.addListener()是相同的,而且一个事件可以绑定多个回调函数;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值