博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node EventEmitter 对象
阅读量:7095 次
发布时间:2019-06-28

本文共 1689 字,大约阅读时间需要 5 分钟。

hot3.png

EventEmitter 类

events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

你可以通过require("events");来访问该模块。

EventEmitter 对象如果在实例化时发生错误,会触发 error 事件。当添加新的监听器时,newListener 事件会触发,当监听器被移除时,removeListener 事件被触发。

下面我们用一个简单的例子说明 EventEmitter 的用法:

//event.js 文件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);

执行结果如下:

运行这段代码,1 秒后控制台输出了 'some_event 事件触发'。其原理是 event 对象注册了事件 some_event 的一个监听器,然后我们通过 setTimeout 在 1000 毫秒以后向 event 对象发送事件 some_event,此时会调用some_event 的监听器。

$ node event.js some_event 事件触发

实例

以下实例通过 connection(连接)事件演示了 EventEmitter 类的应用。

创建 main.js 文件,代码如下:

var events = require('events');var eventEmitter = new events.EventEmitter();// 监听器 #1var listener1 = function listener1() {   console.log('监听器 listener1 执行。');}// 监听器 #2var listener2 = function listener2() {  console.log('监听器 listener2 执行。');}// 绑定 connection 事件,处理函数为 listener1 eventEmitter.addListener('connection', listener1);// 绑定 connection 事件,处理函数为 listener2eventEmitter.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 不再受监听。");// 触发连接事件eventEmitter.emit('connection');eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');console.log(eventListeners + " 个监听器监听连接事件。");console.log("程序执行完毕。");

转载于:https://my.oschina.net/swmhxhs/blog/1511270

你可能感兴趣的文章
11.10/11.11/11.12 安装PHP5 11.13 安装PHP7
查看>>
HQL:实用技术
查看>>
css基本使用
查看>>
使用canvas画圆
查看>>
基础设施ddos防御
查看>>
Django之分页功能实例
查看>>
【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像
查看>>
zookeeper集群的安装和配置
查看>>
tomcat学习笔记之默认连接器
查看>>
基于UDP的服务器和客户端之间的通信
查看>>
Confluence的安装
查看>>
JSPatch的应用
查看>>
[spring/resource/applicationContext-system.xml]: Invocation of init method failed; nested exception
查看>>
Bloom-Filter布隆过滤器
查看>>
磁盘管理二(LVM及磁盘配额)
查看>>
PowerShell DSC(二)拆分配置信息
查看>>
c++ 广义表
查看>>
网络 http服务器-v2-epoll版本
查看>>
我的友情链接
查看>>
Centos 6.3 安装 VNC
查看>>