- Node.js 教程
- Node.js - 首页
- Node.js - 简介
- Node.js - 环境搭建
- Node.js - 第一个应用程序
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调函数概念
- Node.js - 上传文件
- Node.js - 发送邮件
- Node.js - 事件
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 进程
- Node.js - 应用程序扩展
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲区
- Node.js - 流
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 入门
- Node.js - MySQL 创建数据库
- Node.js - MySQL 创建表
- Node.js - MySQL 插入数据
- Node.js - MySQL 从表中选择数据
- Node.js - MySQL 条件查询
- Node.js - MySQL 排序
- Node.js - MySQL 删除数据
- Node.js - MySQL 更新数据
- Node.js - MySQL 联接
- Node.js MongoDB
- Node.js - MongoDB 入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB 插入数据
- Node.js - MongoDB 查找数据
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB 删除数据
- Node.js - MongoDB 更新数据
- Node.js - MongoDB 限制结果
- Node.js - MongoDB 联接
- Node.js 模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - 实用程序模块
- Node.js - Web 模块
- Node.js 有用资源
- Node.js - 快速指南
- Node.js - 有用资源
- Node.js - 讨论
NodeJS - emitter.addListener() 方法
emitter.addListener() 方法用于将监听器函数添加到名为 eventName 的事件的数组末尾。无法检查监听器是否已添加到监听器数组。
如果多次调用emitter.addListener() 方法并传递 eventName 和 listener 的相同组合,则监听器函数将被添加到监听器数组中,并且将被调用其添加的次数。
此方法属于Eventemitter 类,它是 node:events 模块的内置类。
语法
以下是 NodeJs emitter.addListener() 方法的语法:
emitter.addListener(eventName, listener)
参数
此方法接受下面列出的两个参数:
- EventName: 这是方法的第一个参数,它保存事件的名称。它可以是字符串或符号。
- Listener: 当指定事件发生时执行的回调函数。
返回值
它返回添加了监听器的 EventEmitter 的实例。
示例 1
首先,我们导入了node:events 模块。我们创建了一个带有消息的函数 func1。然后,我们使用 eventName 作为第一个参数调用了emitter.addListener() 方法,并将 (func1) 传递给了方法的 listener 参数。因此,该函数被添加到监听器数组中。因此,当我们编译并运行程序时,它将打印监听器函数内的消息。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function func1() {
console.log('Hi, im from function1');
}
myEmitter.addListener('eventOne', func1);
myEmitter.emit('eventOne');
输出
以上程序产生以下输出:
Hi, im from function1
示例 2
在此示例中,我们创建了两个函数并将它们传递给 listener 函数参数。因此,myEmitter.addListener() 方法将监听器函数添加到名为 eventOne 的事件的监听器数组的末尾。然后它将首先打印 func1,然后打印 func2。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function func1() {
console.log('Hi, im from function1');
}
function func2() {
console.log('Hi, im from function2');
}
myEmitter.addListener('eventOne', func1);
myEmitter.addListener('eventOne', func2);
myEmitter.emit('eventOne');
输出
以上程序产生以下输出:
Hi, im from function1 Hi, im from function2
示例 3
以下是一个示例,这里我们将 eventName 和 listener 的相同组合传递给方法。这将导致监听器函数被添加到监听器数组中并多次调用。因此,当我们编译并运行程序时,我们可以看到 func2 被添加了两次到监听器数组中并在输出上打印了两次。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function func1() {
console.log('Hi, im from function1');
}
function func2() {
console.log('Hi, im from function2');
}
myEmitter.addListener('eventOne', func1);
myEmitter.addListener('eventOne', func2);
myEmitter.addListener('eventOne', func2);
myEmitter.emit('eventOne');
输出
执行上述程序后,它将显示以下输出:
Hi, im from function1 Hi, im from function2 Hi, im from function2
示例 4
注意:默认情况下,事件监听器按添加顺序调用。
在此示例中,我们使用 emitter.prependListener() 方法使用了与之前传递给 myEmitter.addListener() 方法相同的 eventName。然后,我们将一个函数 fucn3 传递给 emitter.prependListener() 方法。因此,这会将该函数添加到监听器数组的开头。因此,当我们编译并运行程序时,传递到 emitter.prependListener() 方法中的函数将首先被打印。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function func1() {
console.log('Hi, im from function1');
}
function func2() {
console.log('Hi, im from function2');
}
function func3() {
console.log('Hi, im from function3 but i will be added at top the array.');
}
myEmitter.addListener('eventOne', func1);
myEmitter.addListener('eventOne', func2);
myEmitter.prependListener('eventOne', func3);
myEmitter.emit('eventOne');
输出
执行上述程序后,它将显示以下输出:
Hi, im from function3 but i will be added at top the array. Hi, im from function1 Hi, im from function2
