跟我学Nodejs(二)— Node.js事件模块

这里分享一下 "跟我学 Node.js(二)-- Node.js 事件模块" 的攻略。


事件模块简介

Node.js 的事件模块(events module)是一个内置模块,可用于实现事件驱动(event-driven)模型的程序编写。事件模块提供了一个 EventEmmiter 类(又称为事件发射器),可以用它来触发事件、处理事件以及监听事件。该模块构建在观察者模式(Observer pattern)之上。

核心函数

  • EventEmitter.on()
    用于在某个事件的监听器列表中添加一个新的监听器。

  • EventEmitter.emit()
    用于触发或发射一个事件。 对应第一个arg参数将会成为事件监听器函数的第一个参数。

  • EventEmitter.removeListener()
    用于在特定的监听器列表中移除一个监听器。

  • EventEmitter.once()
    on() 方法的一种变体,它只会触发一次事件,然后在第一次触发后自动进行移除。

示例(1)

const EventEmitter = require('events');

class CustomEmitter extends EventEmitter { }

const ce = new CustomEmitter();  

// 监听 name 事件
ce.on('name', () => {
  console.log('这是 name 事件的监听器函数1');
});

// 监听 name 事件
ce.on('name', () => {
  console.log('这是 name 事件的监听器函数2');
});

// 监听 name 事件
ce.on('name', () => {
  console.log('这是 name 事件的监听器函数3');
});

// 触发 name 事件
ce.emit('name');

输出结果:

这是 name 事件的监听器函数1
这是 name 事件的监听器函数2
这是 name 事件的监听器函数3

上述代码演示了如何使用 Node.js 事件模块创建事件与监听器,ce.emit('name') 触发了名为 'name' 的事件,并依次调用了该事件下面的所有监听器1、2、3。

示例(2)

const EventEmitter = require('events');

class CustomEmitter extends EventEmitter { }

const ce = new CustomEmitter();  

function listener1() {
  console.log('这是 name 事件的监听器函数1');
}

function listener2() {
  console.log('这是 name 事件的监听器函数2');
}

function listener3() {
  console.log('这是 name 事件的监听器函数3');
}

// 监听 name 事件
ce.on('name', listener1);
ce.on('name', listener2);
ce.on('name', listener3);

// 触发 name 事件
// ce.emit('name');

// 移除监听器 listener2
ce.removeListener('name', listener2);

// 再次触发 name 事件
ce.emit('name');

输出结果:

这是 name 事件的监听器函数1
这是 name 事件的监听器函数3

上述代码演示了如何使用 Node.js 事件模块创建事件与监听器,ce.emit('name') 触发了名为 'name' 的事件,并依次调用了该事件下面的所有监听器1(listener1)、2(listener2)、3(listener3)。

接着,我们使用 removeListener() 方法删除监听器 listener2,并再次执行 ce.emit('name')。观察到输出结果只有监听器1(listener1)和3(listener3)。


以上是简单的 Node.js 事件模块攻略,更多细节请参考官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:跟我学Nodejs(二)— Node.js事件模块 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 使用nodejs搭建一个简易HTTP服务的实现示例

    使用Node.js可以搭建一个简易的HTTP服务。下面是实现此功能的攻略: 步骤一:安装Node.js 在Node.js官网中 https://nodejs.org/zh-cn/下载并安装Node.js。 步骤二:创建项目 在命令行中输入以下指令创建项目: mkdir node_http_server cd node_http_server npm init…

    node js 2023年6月8日
    00
  • node.js中的fs.link方法使用说明

    当我们需要在Node.js中创建一个硬链接时,可以使用fs.link()方法。下面是fs.link()方法的使用说明: fs.link()方法 语法 fs.link(existingPath, newPath, callback) 参数 existingPath:原始文件的路径(包含文件名)。 newPath:硬链接的新路径(包含文件名)。 callback…

    node js 2023年6月8日
    00
  • Node批量爬取头条视频并保存方法

    以下是“Node批量爬取头条视频并保存方法”的完整攻略: 1. 准备工作 首先,需要确保已经安装了Node.js和npm。然后,安装所需的依赖模块:cheerio和request-promise。安装命令如下: npm install cheerio request-promise 2. 获取视频列表 爬取头条视频,需要先获取视频列表。可以通过头条的API接…

    node js 2023年6月8日
    00
  • React diff算法面试考点超详细讲解

    React diff算法是React性能优化中的一个重要环节,它在React Virtual DOM中使用,用于在进行新旧Virtual DOM节点的比较时,将节点差异找出来并进行只更新需要更新的部分,让页面渲染更加高效。在面试中,相关考点会非常重要,本文将从以下几个方面分别进行讲解。 一、React diff算法过程 React diff算法的具体过程如下…

    node js 2023年6月8日
    00
  • 简单的Lua 连接操作mysql数据库的方法

    当我们需要将Lua应用程序连接到MySQL数据库时,可以使用Lua的luasql库。下面是一份完整的攻略,包括如何安装luasql库、连接MySQL数据库,以及如何使用Lua语言执行SQL查询和更新数据。 安装 Luasql 库 在使用Luasql之前,首先需要安装它。可以使用LuaRocks包管理器来安装。在终端中输入以下命令: luarocks inst…

    node js 2023年6月8日
    00
  • 详解本地Vue项目请求本地Node.js服务器的配置方法

    下面是详解本地Vue项目请求本地Node.js服务器的配置方法的完整攻略。 环境准备 在开始本地Vue项目请求本地Node.js服务器的配置之前,需要先完成以下环境准备: 安装Node.js,确保版本高于8.0 安装Vue CLI,用于快速搭建Vue项目 步骤一:创建后端服务 首先,需要通过Node.js创建一个本地的后端服务。可以通过Express框架来实…

    node js 2023年6月8日
    00
  • Node后端Express框架安装及应用

    安装Express框架: 1.首先需要安装Node.js,可以前往Node.js官网下载相应版本的安装包并完成安装。 2.打开命令行工具,输入以下命令安装Express框架: npm install express –save 其中,–save选项将安装的内容添加进package.json文件中,方便后续依赖管理。 3.在项目目录下创建app.js文件,…

    node js 2023年6月8日
    00
  • Vue的diff算法原理你真的了解吗

    Vue的diff算法原理 简介 Vue通过diff算法实现了Virtual DOM的快速比对和渲染,从而提升了页面性能。在Vue中,每次数据变化时,会通过比较新旧虚拟节点树的差异,去最小化的更新真实的DOM。 diff算法的实现 diff的实现主要分为以下三个步骤: 1. 生成新旧虚拟节点树 在Vue中通过调用render函数生成新的虚拟节点树,然后通过之前…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部