- 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 Where 条件
- 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.once() 方法
emitter.once() 方法用于为名为 eventName 的事件添加一次性监听器函数。无法检查监听器是否已添加到监听器数组中。
如果多次调用 emitter.once() 方法并传递相同的 eventName 和 listener 组合,则监听器函数将被添加到 listeners 数组中,并且将被调用其添加的次数。
此方法属于 Eventemitter 类,它是 node:events 模块的内置类。
语法
以下是 NodeJs emitter.once() 方法的语法:
eventEmitter.once(event, listener)
参数
此方法接受以下两个参数:
- EventName: 表示事件名称的字符串或符号。
- Listener: 当事件第一次发出时调用。监听器函数可以接受在发出事件时传递的参数。
返回值
此方法返回特定事件的事件监听器。当发出指定的事件时,将执行提供的回调函数。
示例 1
以下是 NodeJs eventemitter.once(event, listener) 方法的基本示例。
首先,我们导入了 node:events 模块。我们创建了一个带有消息的监听器函数 one()。然后,我们通过将 eventName (event) 传递给第一个参数并将函数 one() 传递给第二个参数来调用 myEmitter.once() 方法。如果我们编译并运行程序,myEmitter.once() 方法将返回存储在 listener 数组中的监听器 (函数 one())。const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function one(){
console.log('First user login successful...');
}
myEmitter.once('event', one);
myEmitter.emit('event');
输出
以上程序产生以下输出:
First user login successful...
示例 2
在本例中,我们创建了三个函数并将它们传递给 myEmitter.once() 方法的监听器函数参数。因此,myEmitter.on() 方法将监听器函数添加到名为 event 的事件的 listener 数组的末尾。因此,当我们编译并运行程序时,它将首先打印 one()、two(),然后打印 three()。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function one(){
console.log('First user login successful');
}
function two(){
console.log('Second user login successful');
}
function three(){
console.log('Third user login successful');
}
myEmitter.once('event', one);
myEmitter.once('event', two);
myEmitter.once('event', three);
myEmitter.emit('event');
输出
以上程序产生以下输出:
First user login successful Second user login successful Third user login successful
示例 3
注意: 默认情况下,事件监听器按添加顺序调用。
在下面的示例中,我们使用了 emitter.prependOnceListener() 方法,并使用了与之前传递给 myEmitter.once() 方法相同的 eventName。然后,我们将函数 four() 传递给 emitter.prependOnceListener() 方法。因此,这会将函数添加到 listeners 数组的开头。因此,当我们编译并运行程序时,传递到 emitter.prependOnceListener() 方法中的函数将首先打印,然后是其余的函数。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function one(){
console.log("Func1 is added");
}
function two(){
console.log("Fucn2 is added");
}
function three(){
console.log("Fucn3 is added");
}
function four(){
console.log("Fucn4 is added");
}
myEmitter.once("myEvent", one);
myEmitter.once("myEvent", two);
myEmitter.once("myEvent", three);
myEmitter.prependOnceListener("myEvent", four);
myEmitter.emit("myEvent");
输出
以上程序产生以下输出:
Fucn4 is added Func1 is added Fucn2 is added Fucn3 is added
