Event Emitter

簡單的說就是與 DOM 互動時的 Event Handler

Nodejs 中的 Stream 實作 Event Emitter 的 API,可以呼叫 Event Emitteron() API

,針對各種事件進行處理:

import * as fs from "fs";

// NOTE: stream 為 Event Emitter
const stream = fs.createReadStream("/path/to/large/file");

/* 
 * NOTE: 透過 on API 針對指定事件作處理.
 * 此例中, 在 file 載入完時會觸發 end 事件, 並執行 on API 中第二個 parameter 的 callback function
 */
stream.on("end", () => {
  // NOTE: 在 end 事件觸發時執行此 callback
})

DESCRIPTION

  • 設計 Event Emitter 的人可以自定義事件, 如上例的 end
  • Nodejs 預設的事件中,如果 error 事件沒有被監聽/處理(on(error, () => {})),會被往外拋。

API

on(event: string, callback: Function)

每次觸發此事件時執行。

once(event: string, callback: Function)

僅在事件第一次觸發時執行。

removeListener(event:string, callback: Function)

移除事件綁定的 callback。相同的 callback reference 視為同個。

removeAllListenres(event: string)

移除事件上所有的 callback