EventEmitter

1.

剛才在操作檔案時,看到類似這樣的東西

fs.on('open', function () {
  console.log('event has occured');
});

原因是當我們在讀取時他會自動發出

fs.emit('open');

fs.on("open")接到他的通知

實際上他已經繼承了EventEmitter

以下為一個範例

var EventEmitter = require('events').EventEmitter;
var oneEvent = new EventEmitter();

oneEvent.on('an Event', function () {
  console.log('event has occured');
});

function f() {
  console.log('start');
  oneEvent.emit('an Event');
  console.log('end');
}

f()
// start
// event has occured
// end

一個emit發出一個用on接收

Socket.io就是使用這個概念

2. Node.js預設最多只能設定10個具有on的回調參數

代碼改成上面後會發現console出現提醒訊息

我們可以加入一行來手動增加監聽器on的數量

2.可以在emit傳入參數

3. 任何其他的函式都可以使用EventEmitter

只要將它繼承即可

或者

你也可以用util模組(內建)去做繼承

4. EventEmitter 原始的事件

newListener事件:添加新的回調函式時觸發。 removeListener事件:移除回調函式時觸發。

5.once方法

6.一次移除所有監聽

7.尋找某個事件擁有的回調函式

listener方法

Last updated

Was this helpful?