• Node.js Video Tutorials

Node.js eventTarget.dispatchEvent() 方法


eventTarget.removeEventListener() 方法用於移除之前使用 eventTarget.addEventListener() 方法新增的事件監聽器。

此方法屬於 node:events 模組的 EventTarget 類。

語法

以下是 NodeJs eventTarget.removeEventListener() 方法的語法:

eventTarget.removeEventListener(type, listener, [, options])

引數

此方法接受三個引數,如下所述。

此方法包含三個引數,如下所述。

  • type:此引數包含一個字串值,表示要監聽的事件型別。
  • listener:當發生指定型別的事件時接收通知的物件。
  • options:(可選)
    • once:布林值,指示監聽器是否只調用一次。如果為 true,則監聽器在呼叫後將自動移除。
    • passive:布林值,如果為 true,則表示監聽器不會呼叫 Event 物件的 preventDefault() 方法。
    • capture:布林值,指示此型別的事件在分派到任何 EventTarget 之前是否會分派到指定的監聽器。在 Node.js 中不直接使用,僅為了 API 完整性而新增。
    • signal:當指定的 AbortSignal 物件的 abort() 方法被呼叫時,監聽器將被移除。

示例 1

以下是 NodeJs eventTarget.removeEventListener() 方法的基本示例。

首先,我們匯入 node:events 模組,將帶有事件型別“foo”的監聽器函式傳遞給 eventTarget.addEventListener() 方法。然後,我們透過呼叫 eventtarget.removeEventListener() 從事件型別“foo”中移除處理程式的例項。

const { EventEmitter, listenerCount } = require('node:events');

function handler(event){
};

const eventtarget = new EventTarget();

eventtarget.addEventListener('foo', handler);

eventtarget.removeEventListener('foo', handler);

輸出

根據上面的程式,我們向事件型別“foo”添加了一個監聽器“handler”,然後我們從“foo”中移除了“handler”。

示例 2

在這個程式中,我們將單個監聽器函式“handler”與事件型別“foo”一起傳遞給 eventTarget.addEventListener() 方法。然後,我們透過傳遞“handler”作為引數來呼叫 eventtarget.removeEventListener()。

const { EventEmitter, listenerCount } = require('node:events');

function handler(event){
};

const eventtarget = new EventTarget();

eventtarget.addEventListener('foo', handler);
eventtarget.addEventListener('foo', handler);
eventtarget.addEventListener('foo', handler);

eventtarget.removeEventListener('foo', handler);

輸出

根據上面的程式,我們向事件型別“foo”添加了三個“handler1”監聽器例項,然後我們從“foo”中移除了最近新增的 handler 例項。

示例 3

在下面的程式中,我們添加了最多三個“handler”監聽器例項。第一個例項使用 capture: true,其餘兩個例項使用 capture: false。然後,我們呼叫 eventTarget.removeEventListener() 方法,不帶任何 {capture:} 值。我們再次呼叫 eventTarget.removeEventListener() 方法,並帶有 {capture: true} 值。

const { EventEmitter, listenerCount } = require('node:events');

function handler(event){
};

const eventtarget = new EventTarget();

eventtarget.addEventListener('foo', handler, {capture: true});
eventtarget.addEventListener('foo', handler, {capture: false});
eventtarget.addEvaentListener('foo', handler, {capture: false});

eventtarget.removeEventListener('foo', handler);

eventtarget.removeEventListener('foo', handler, {capture: true});

輸出

根據程式,eventtarget.removeEventListener('foo', handler) 將從“foo”事件型別中移除最近新增的例項,而 eventtarget.removeEventListener('foo', handler, {capture: true}) 將從“foo”事件型別中移除 handler 的第一個例項。

nodejs_events.htm
廣告