Node.js EventEmitter对象
我们都知道 Node.js应用 以单线程事件驱动模型运行。然而,Node.js在应用程序的后台执行线程池,而应用程序本身不支持多线程。
这一切都是通过使用Node.js中的事件模型实现的。在本文中,我们将看到EventEmitter对象以及它如何创建事件和触发事件。但是您必须了解事件是什么。
事件处理 与回调函数非常相似,但回调函数是在异步函数返回结果时使用的,而事件处理基于观察者模式工作。在Node.js中,监听事件的函数被称为观察者。当事件发生时,监听函数开始执行。Node.js中有多个内置事件,如EventEmitter类。我们将展示如何在事件处理中使用EventEmitter类。
EventEmitter 是Node.js中提供的一个内置事件。Node.js的许多核心API都是围绕一种习惯的异步事件驱动架构构建的,其中某些类型的对象(称为“发射器”)发出命名事件,引发Function对象(“监听器”)被调用。EventEmitter帮助事件发射器触发事件,并使监听器以简单的方式对这些事件进行操作。
创建EventEmitter对象: 我们可以通过创建EventEmitter对象并使用它来触发事件。我们将提供EventEmitter对象创建的语法。在创建EventEmitter对象之前,您应该导入事件。
步骤1: 导入事件模块。
步骤2: 创建一个EventEmitter对象。
步骤3: 然后将事件和事件处理程序绑定在一起
步骤4: 我们可以使用emit方法触发事件
示例1: 在这个示例中,我们展示了如何创建一个EventEmitter对象 **** 然后通过使用 emit() 方法触发一个事件,并使用EventEmitter的 on() 方法绑定连接。当执行停止时,我们使用 emit() 方法来触发连接。
index.js
运行应用的步骤: 运行以下命令来执行script.js
输出:
扩展EventEmitter类: EventEmitter类支持继承。有时候你需要实现一个EventEmitter的子类。
示例2: 在这个示例中,MyEmitter继承了EventEmitter类。MyEmitter使用 on() 方法来监听事件。这个事件是通过 emit() 来触发的。
index.js
输出:
EventEmitter类的特点:
- 此类用于处理事件。
- 它可以继承其他类的事件功能。
- 它发出事件。
- 它监听和处理事件。
- 它帮助在后台运行多线程。
EventEmitter方法:
- emitobj.on(event, listener)
- emitobj.emit(event,[arg1],[arg2],..[argN])
- emitobj.once(event, listener)
- emitobj.removeListener(event, listener)
EventEmitter方法的实现:
示例: 在此示例中,我们看到了EventEmitter方法的实际应用。我们可以看到所有四种方法: on()、emit()、once() 和 removeListener() 。
输出: