- 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.rawListener() 方法
emitter.rawListeners() 方法用于检索特定事件 eventName 的监听器数组的副本。即使这些监听器包括任何包装器(由 emitter.once() 方法创建),此方法也会返回监听器的数组副本。
此方法属于Eventemitter类,它是 node:events 模块的内置类。
语法
以下是 NodeJs emitter.rawListener() 方法的语法:
emitter.rawListeners(eventName);
参数
此方法只接受一个参数。
- eventName:此参数保存名为 eventName 的事件。
返回值
此方法返回特定事件 eventName 的监听器数组的副本。它还会返回由 emitter.once() 方法创建的任何包装器的监听器数组的副本。
示例 1
以下是 NodeJs emitter.rawListener() 方法的基本示例。
我们将一个监听器函数 `func()` 与事件名 `myEvent` 传递给 emitter.once() 方法(此方法包含包装器)。然后我们返回一个包含函数 `onceWrapper` 的新数组,该函数具有一个包含原始监听器的属性 `listener`。然后我们通过调用 `eventFnWrapper.listener()` 将函数内的文本记录到控制台,并且它不会取消绑定 `once` 事件。再次调用 `eventFnWrapper()` 将函数内的文本记录到控制台,现在这将删除监听器。
const EventEmitter = require('node:events');
const emitter = new EventEmitter();
function func(){
console.log('log once');
};
emitter.once('myEvent', func);
console.log(emitter.rawListeners('myEvent'));
const listeners = emitter.rawListeners('myEvent');
const eventFnWrapper = listeners[0];
eventFnWrapper.listener();
eventFnWrapper();
console.log(emitter.rawListeners('myEvent'));
输出
上述程序产生以下输出:
[ [Function: bound onceWrapper] { listener: [Function: func] } ]
log once
log once
[]
示例 2
在这个程序中,我们通过 `emitter.addListener` 添加了事件。然后我们返回一个包含单个绑定函数 `.addListener()` 的新数组。然后我们两次记录监听器函数 func() 内的消息。
const EventEmitter = require('node:events');
const emitter = new EventEmitter();
function func(){
console.log('log once');
};
emitter.addListener('MyEvent', func)
const newListeners = emitter.rawListeners('MyEvent');
newListeners[0]();
emitter.emit('MyEvent');
console.log(emitter.rawListeners('MyEvent'));
输出
上述程序产生以下输出:
log once log once [ [Function: func] ]
示例 3
以下另一个示例,我们为 'start' 事件添加了一个 on 监听器和一个 once 监听器,并使用 rawListeners('start') 检索原始监听器。因此,我们遍历监听器并确定每个监听器是 on 监听器还是 once 监听器。
const EventEmitter = require('node:events');
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('start', () => {
console.log('started');
});
eventEmitter.once('start', () => {
console.log('started (once)');
});
const listeners = eventEmitter.rawListeners('start');
listeners.forEach(listener => {
if (listener.listener) {
console.log('Found an "once" listener:', listener.listener);
} else {
console.log('Found an "on" listener:', listener);
}
});
输出
上述程序产生以下输出:
Found an "on" listener: [Function (anonymous)] Found an "once" listener: [Function (anonymous)]
