Event Emitter
簡單的說就是與 DOM 互動時的 Event Handler。
Nodejs 中的 Stream 實作 Event Emitter 的 API,可以呼叫 Event Emitter 的 on() 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