
- 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)]