Node.js内置模块events事件监听发射详解

Node.js 内置模块 events 为发布-订阅模式提供了基础。该模块提供了两个类:EventEmitter 和 Class。EventEmitter 是所有事件侦听器类的父类,而 Class 则使其更容易地进行继承。

EventEmitter 类

EventEmitter 类提供了一些方法来操作事件:

  • on(eventName, listener) - 添加一个监听器
  • once(eventName, listener) - 添加一个只回调一次的监听器
  • emit(eventName, [...args]) - 触发事件
  • removeListener(eventName, listener) - 移除一个监听器
  • removeAllListeners([eventName]) - 移除所有监听器
  • setMaxListeners(n) - 设置事件监听器最大个数

以下是一个简单的示例,演示如何使用 EventEmitter 类。我们首先需要使用 require 函数引入 events 模块:

const EventEmitter = require('events');

接下来,我们创建一个新的 EventEmitter 实例:

const emitter = new EventEmitter();

我们现在可以为该实例添加一个监听器,使用 on 方法。以下代码演示如何添加一个监听器:

emitter.on('eventName', (...args) => {
  console.log('event triggered with args: ', ...args);
});

我们可以使用 emit 方法触发事件:

emitter.emit('eventName', 'arg1', 'arg2');

运行上述代码将输出以下内容:

event triggered with args: arg1 arg2

我们可以使用 removeListener 方法来移除对应的监听器:

emitter.removeListener('eventName', listener);

如果要移除所有监听器,可以使用 removeAllListeners 方法:

emitter.removeAllListeners('eventName');

Class 类

Class 是 EventEmitter 类的简单扩展,旨在更轻松地创建自定义对象,该对象可以通过事件的方式进行通信。

以下是一个简单的示例,演示如何使用 Class 类。首先,我们需要使用 require 函数引入 events 模块:

const { EventEmitter } = require('events');

接下来,我们创建一个新的类,该类扩展 EventEmitter 类:

class MyClass extends EventEmitter {
  constructor() {
    super();
  }

  myMethod() {
    this.emit('eventName', 'arg1', 'arg2');
  }
}

该类定义了一个新方法 myMethod,该方法触发了一个名为 eventName 的事件,并传递了两个参数 'arg1' 和 'arg2'。

我们可以使用 create 方法来创建该类的新实例,并添加一个监听器:

const instance = new MyClass();

instance.on('eventName', (...args) => {
  console.log('event triggered with args: ', ...args);
});

instance.myMethod();

运行上述代码将输出以下内容:

event triggered with args: arg1 arg2

以上是使用 EventEmitter 和 Class 类使用事件的基本示例。事件非常灵活,可以轻松地添加到您的应用程序中以实现异步通信。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js内置模块events事件监听发射详解 - Python技术站

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

相关文章

  • Node Express用法详解【安装、使用、路由、中间件、模板引擎等】

    Node Express是一个基于Node.js的开源Web开发框架,提供了丰富的API和中间件,方便开发者构建高效、稳定的Web应用程序。本文将介绍如何安装、使用和配置Node Express框架,并详细讲解路由、中间件和模板引擎等相关知识。 安装Node Express 在安装Node Express之前,需要确保已经安装了Node.js。在命令行中输入…

    node js 2023年6月8日
    00
  • webstorm建立vue-cli脚手架的傻瓜式教程

    下面是详细讲解“WebStorm建立Vue CLI脚手架的傻瓜式教程”的完整攻略。 步骤1:安装Node.js和Vue CLI 首先,需要在本地安装Node.js和Vue CLI。Node.js是JavaScript的运行环境,而Vue CLI是用于生成Vue.js项目的命令行工具。 安装Node.js:从官网https://nodejs.org/en/do…

    node js 2023年6月9日
    00
  • 简单的socket编程入门示例

    下面是详细的“简单的socket编程入门示例”的攻略: 什么是Socket编程 Socket编程是一种基于网络通信协议的编程方式,它可以让程序在网络中传输数据。Socket编程是建立于TCP/IP协议之上的,使用Socket编程可以实现一些网络应用程序,如HTTP、FTP、SMTP等。 Socket编程的基本步骤 Socket编程的基本步骤如下: 创建Soc…

    node js 2023年6月8日
    00
  • 在node.js中怎么屏蔽掉favicon.ico的请求

    在Node.js中,屏蔽掉favicon.ico的请求需要对请求的URL进行判断,如果请求的URL是/favicon.ico,则返回400或404状态码并结束请求。以下是完整的攻略: 1. 监听请求 在Node.js中,可以使用http模块来创建HTTP服务器,使用request事件来监听客户端请求,获取请求的路径。 const http = require…

    node js 2023年6月8日
    00
  • vue-cli构建vue项目的步骤详解

    下面我就为您详细讲解“vue-cli构建vue项目的步骤详解”的攻略。 步骤一:安装Node.js 要安装Vue CLI,首先需要安装Node.js。可以从官方网站 https://nodejs.org/zh-cn/ 上下载安装。 步骤二:安装Vue CLI 使用npm全局安装Vue CLI: npm install -g @vue/cli 如果您已经安装了…

    node js 2023年6月8日
    00
  • nodejs实现的一个简单聊天室功能分享

    下面我将详细讲解“nodejs实现的一个简单聊天室功能分享”的完整攻略: 简介 本文主要介绍如何使用Node.js实现一个简单的聊天室功能,在此过程中,将用到Node.js、WebSocket、Express和Bootstrap等工具和框架。 步骤 1. 创建项目并安装依赖 首先,创建一个新的项目并进入项目目录,执行以下命令: mkdir chat-room…

    node js 2023年6月8日
    00
  • 利用njs模块在nginx配置中引入js脚本

    在nginx中引入js脚本可以通过njs模块实现。njs模块是nginx官方提供的一种脚本语言,类似于JavaScript语言的语法,常用于nginx的扩展和自定义模块的开发。 以下为利用njs模块在nginx中引入js脚本的完整攻略: 安装njs模块 要在nginx中使用njs模块,首先需要安装njs模块,下面是关于安装njs模块的步骤: 安装编译工具和依…

    node js 2023年6月9日
    00
  • 利用node.js如何搭建一个简易的即时响应服务器

    要搭建一个简易的即时响应服务器,可以使用node.js结合一些常见的包(例如Express、Socket.io等)来实现。以下是具体攻略: 第一步:安装Node.js 首先需要下载安装Node.js,可以去官网下载可执行文件,安装完成后在终端或命令行窗口中输入以下指令,如果正确输出版本号则说明安装成功: node -v 第二步:初始化项目 接下来,需要初始化…

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