跟我学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日

相关文章

  • node.js中ws模块创建服务端与客户端实例代码

    下面是关于“node.js中ws模块创建服务端与客户端实例代码”的完整攻略。 1. 安装ws模块 在开始使用ws模块之前,需要安装ws模块,可以使用npm进行安装。 npm install ws –save 2. 创建WebSocket服务端 首先需要引入ws模块,然后创建一个WebSocketServer对象,监听指定的端口。 示例代码: const W…

    node js 2023年6月8日
    00
  • Angular8升级至Angular13遇到的问题解决

    以下是“Angular8升级至Angular13遇到的问题解决”的完整攻略。 背景 Angular是目前应用非常广泛的前端MVC框架之一。由于Angular版本更新较快,升级过程中会涉及到一定的风险,因此在升级之前需要仔细阅读相关的文档,避免不必要的麻烦。 升级步骤 步骤一:备份项目和依赖 在升级之前,需要备份项目和依赖。稍有不慎就会导致大量的工作和时间被浪…

    node js 2023年6月9日
    00
  • node.js文件的复制、创建文件夹等相关操作

    下面是node.js文件的复制、创建文件夹等相关操作的完整攻略: 文件复制 在Node.js中,文件复制可以使用fs模块的copyFile()方法。其基本语法如下: fs.copyFile(srcPath, destPath, (err) => { if (err) throw err; console.log(‘File was copied’); …

    node js 2023年6月8日
    00
  • 详解Node全局变量global模块

    下面针对Node全局变量global模块做一份详细的攻略,内容如下: 什么是global模块 在Node中,global是全局变量的容器,也就是说在Node中所有的变量、函数、对象都是global的属性,因此global是Node中的全局命名空间。 如何使用global模块 我们可以使用全局变量global来声明全局变量,如下面的示例: // 全局属性gre…

    node js 2023年6月8日
    00
  • 如何利用node转发请求详解

    当需要在一个server上转发请求到另一个server时,可以利用Node的http模块自己编写一个服务器完成这个过程。下面是完成此过程的攻略: 步骤一. 安装和引入依赖包 安装http-proxy和httpnpm包: npm install http-proxy http –save 在代码中引入依赖包: const http = require(‘ht…

    node js 2023年6月8日
    00
  • Node.js创建HTTP文件服务器的使用示例

    下面我将为您详细讲解如何使用Node.js创建HTTP文件服务器。 概述 Node.js是一个非常流行的JavaScript后端运行环境,它可以帮助我们轻松创建一个HTTP服务器并用于提供Web请求服务。本文将会介绍如何使用Node.js快速创建一个HTTP文件服务器。 步骤 步骤1:安装Node.js 首先我们需要安装Node.js,在官方网站 https…

    node js 2023年6月8日
    00
  • javascript 定时自动切换的选项卡Tab

    为了详细讲解“javascript 定时自动切换的选项卡Tab”的完整攻略,我们先来了解一下什么是选项卡Tab。 什么是选项卡Tab 选项卡(Tabs)是一种常见的网站导航方式,能够让用户快速切换不同的内容。选项卡通常用于展示多个内容,每个选项卡对应内容不同,用户可以通过点击选项卡标签来快速切换内容。 实现自动切换的选项卡Tab 实现自动切换的选项卡有多种方…

    node js 2023年6月8日
    00
  • vscode输入npm install报错:node-sass@8.0.0 install:’node scripts/install.js’解决

    针对这个问题,我提供以下攻略: 问题描述 在使用 VS Code 编辑器时,当输入 npm install 命令安装依赖时,报错如下: ERR! node-sass@8.0.0 install: `node scripts/install.js` ERR! Exit status 1 解决方法 1. 查看 node-sass 的版本是否正确 首先,查看你的项…

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