- 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.removeListener() 方法
emitter.removeListener() 方法用於從名為 eventName 的事件的監聽器陣列中移除指定的監聽器函式。
此方法將從監聽器陣列中移除最近新增的監聽器函式例項。如果一個監聽器被多次新增到名為 eventName 的事件的監聽器陣列中,則需要多次呼叫 removeListener() 方法才能從監聽器陣列中移除每個例項。
此方法屬於 Eventemitter 類,它是 node:events 模組的內建類。
語法
以下是 NodeJs emitter.removeListener() 方法的語法:
emitter.removeListener(eventName, listener)
引數
此方法接受以下兩個引數:
- EventName: (必需) 這是方法的第一個引數,它儲存事件的名稱。它可以是字串或符號。
- Listener: (必需) 此引數儲存回撥函式。
返回值
此方法返回對 EventEmitter 的引用,以便可以連結呼叫。
現在讓我們進入在不同場景下使用 Node.js 的 emitter.removeListener() 方法的示例。
示例 1
以下是 NodeJs emitter.removeListener(event, listener) 方法的基本示例。
我們建立了一個包含訊息的函式 f1()。然後,我們使用作為第一個引數傳遞的 eventName (event) 呼叫 emitter.addListener() 方法,並將 (f1) 傳遞給方法的 listener 函式引數。因此,該函式被新增到監聽器陣列中。然後,我們使用 eventName (event) 和 f1() 函式呼叫 myEmitter.removeListener() 方法。因此,當我們編譯並執行程式時,myEmitter.removeListener() 方法將移除名為“event”的事件的監聽器函式 f1()。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function f1(){
console.log('I\'m from function1');
}
myEmitter.addListener('event', f1);
myEmitter.removeListener('event', f1);
myEmitter.emit('event');
輸出
上述程式產生以下輸出:
Program did not output anything!
示例 2
在此程式中,我們將相同的 eventName 和 listener 函式組合傳遞給 myEmitter.addListener() 方法。這將導致監聽器函式被新增到監聽器陣列並被多次呼叫。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function f1(){
console.log('I\'m from function1');
}
myEmitter.addListener('event1', f1);
myEmitter.addListener('event2', f1);
myEmitter.addListener('event3', f1);
myEmitter.addListener('event4', f1);
myEmitter.removeListener('event1', f1);
myEmitter.removeListener('event2', f1);
myEmitter.emit('event3');
myEmitter.emit('event4');
輸出
上述程式產生以下輸出:
I'm from function1 I'm from function1
示例 3
注意:預設情況下,事件監聽器按新增順序呼叫。
我們為單個事件 (event) 多次添加了單個監聽器函式 (f1)。然後,我們使用名為“event”的事件和監聽器 f1() 呼叫 myEmitter.removeListener()。
const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();
function f1(){
console.log('Hi');
}
myEmitter.addListener('event', f1);
myEmitter.on('event', f1);
myEmitter.once('event', f1);
myEmitter.removeListener('event', f1);
myEmitter.emit('event');
輸出
上述程式產生以下輸出:
Hi Hi
