
- 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.addListener() 方法
emitter.addListener() 方法用於將監聽器函式新增到名為 eventName 的事件的陣列末尾。無法檢查監聽器是否已新增到監聽器陣列。
如果多次呼叫emitter.addListener() 方法並傳遞 eventName 和 listener 的相同組合,則監聽器函式將被新增到監聽器陣列中,並且將被呼叫其新增的次數。
此方法屬於Eventemitter 類,它是 node:events 模組的內建類。
語法
以下是 NodeJs emitter.addListener() 方法的語法:
emitter.addListener(eventName, listener)
引數
此方法接受下面列出的兩個引數:
- EventName: 這是方法的第一個引數,它儲存事件的名稱。它可以是字串或符號。
- Listener: 當指定事件發生時執行的回撥函式。
返回值
它返回添加了監聽器的 EventEmitter 的例項。
示例 1
首先,我們匯入了node:events 模組。我們建立了一個帶有訊息的函式 func1。然後,我們使用 eventName 作為第一個引數呼叫了emitter.addListener() 方法,並將 (func1) 傳遞給了方法的 listener 引數。因此,該函式被新增到監聽器陣列中。因此,當我們編譯並執行程式時,它將列印監聽器函式內的訊息。
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); function func1() { console.log('Hi, im from function1'); } myEmitter.addListener('eventOne', func1); myEmitter.emit('eventOne');
輸出
以上程式產生以下輸出:
Hi, im from function1
示例 2
在此示例中,我們建立了兩個函式並將它們傳遞給 listener 函式引數。因此,myEmitter.addListener() 方法將監聽器函式新增到名為 eventOne 的事件的監聽器陣列的末尾。然後它將首先列印 func1,然後列印 func2。
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); function func1() { console.log('Hi, im from function1'); } function func2() { console.log('Hi, im from function2'); } myEmitter.addListener('eventOne', func1); myEmitter.addListener('eventOne', func2); myEmitter.emit('eventOne');
輸出
以上程式產生以下輸出:
Hi, im from function1 Hi, im from function2
示例 3
以下是一個示例,這裡我們將 eventName 和 listener 的相同組合傳遞給方法。這將導致監聽器函式被新增到監聽器陣列中並多次呼叫。因此,當我們編譯並執行程式時,我們可以看到 func2 被添加了兩次到監聽器陣列中並在輸出上列印了兩次。
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); function func1() { console.log('Hi, im from function1'); } function func2() { console.log('Hi, im from function2'); } myEmitter.addListener('eventOne', func1); myEmitter.addListener('eventOne', func2); myEmitter.addListener('eventOne', func2); myEmitter.emit('eventOne');
輸出
執行上述程式後,它將顯示以下輸出:
Hi, im from function1 Hi, im from function2 Hi, im from function2
示例 4
注意:預設情況下,事件監聽器按新增順序呼叫。
在此示例中,我們使用 emitter.prependListener() 方法使用了與之前傳遞給 myEmitter.addListener() 方法相同的 eventName。然後,我們將一個函式 fucn3 傳遞給 emitter.prependListener() 方法。因此,這會將該函式新增到監聽器陣列的開頭。因此,當我們編譯並執行程式時,傳遞到 emitter.prependListener() 方法中的函式將首先被列印。
const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); function func1() { console.log('Hi, im from function1'); } function func2() { console.log('Hi, im from function2'); } function func3() { console.log('Hi, im from function3 but i will be added at top the array.'); } myEmitter.addListener('eventOne', func1); myEmitter.addListener('eventOne', func2); myEmitter.prependListener('eventOne', func3); myEmitter.emit('eventOne');
輸出
執行上述程式後,它將顯示以下輸出:
Hi, im from function3 but i will be added at top the array. Hi, im from function1 Hi, im from function2