node . js中使用EventEmitter处理事件的案例

  介绍

这篇文章将为大家详细讲解有关节点。js中使用EventEmitter处理事件的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在本教程中我们学习节点。js的原生<代码> EvenEmitter> EvenEmitter> EventEmitter>

总之本文涵盖了关于<代码> EventEmitter>

什么是事件?

当今事件驱动的体系结构非常普遍,事件驱动的程序可以产生,检测和响应各种事件。

节点。js的核心部分是事件驱动的,有许多诸如文件系统(<代码> fs> 流这样的模块本身都是用<代码> EventEmitter>

在事件驱动的编程中,<强>事件(事件)是一个或多个动作的结果,这可能是用户的操作或者传感器的定时输出等。

我们可以把事件驱动程序看作是发布-订阅模型,其中发布者触发事件,订阅者侦听事件并采取相应的措施。

例如,假设有一个服务器,用户可以向其上传图片。在事件驱动的编程中,诸如上传图片之类的动作将会发出一个事件,为了利用它,该事件还会有1到n个订阅者。

在触发上传事件后,订阅者可以通过向网站的管理员发电子邮件,让他们知道用户已上传照片并对此做出反应,另一个订阅者可能会收集有关操作的信息,并将其保存在数据库中。

这些事件通常是彼此独立的,尽管它们也可能是相互依赖的。

什么是EventEmitter ?

<代码> EventEmitter> 事件模块。根据文档中的描述:

大部分的节点。js核心API都是基于惯用的异步事件驱动的体系结构所实现的,在该体系结构中,某些类型的对象(称为“发射器”)发出已命名事件,这些事件会导致调用<代码> 函数对象(“监听器”)”

这个类在某种程度上可以描述为发布-订阅模型的辅助工具的实现,因为它可以用简单的方法帮助事件发送器(发布者)发布事件(消息)给监听器(订阅者)。

创建EventEmitters

话虽如此,但还是先创建一个<代码> EventEmitter>

创建 EventEmitter 对象

先从一个简单的例子开始:创建一个<代码> EventEmitter>

首先从<代码> 模事件块中导入<代码> EventEmitter> const {EventEmitter}=要求(& # 39;事件# 39;);

然后创建一个<代码> EventEmitter :

const timerEventEmitter=new EventEmitter ();

用这个对象发布事件非常容易:

timerEventEmitter.emit (“update");

前面已经指定了事件名,并把它发布为事件。但是程序没有任何反应,因为还没有侦听器对这个事件做出反应。

先让这个事件每秒重复一次。用<代码> setInterval() ,方法创建一个计时器,每秒发布一次更新<代码> 事件:

让currentTime=0;//每秒触发一次更新事件   setInterval()=比;{   currentTime + +;   timerEventEmitter.emit(& # 39;更新# 39;,currentTime);   },1000)、

<代码> EventEmitter 实例用来接受事件名称和参数。把<代码> 作更新为事件名,<代码> currentTime>

通过<代码>释放()方法触发发射器,该方法用我们提供的信息推送事件。准备好事件发射器之后,为其订阅事件监听器:

timerEventEmitter.on(& # 39;更新# 39;,(时间)=比;{   console.log(& # 39;从发布者收到的消息:& # 39;);   控制台。日志(“程序已经运行了${时间}秒');   });

通过在()<代码> 方法创建侦听器,并传递事件名称来指定希望将侦听器附加到哪个事件上。在<代码> 更新事件上,运行一个记录时间的方法。

<代码>()函数的第二个参数是一个回调,可以接受事件发出的附加数据。

运行代码将会输出:

从发布者收到的消息:   程序已经运行了1秒   从发布者收到的消息:   程序已经运行了2秒   从发布者收到的消息:   程序已经运行了3秒   …

node . js中使用EventEmitter处理事件的案例