
- 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