1. 程式人生 > 實用技巧 >事件(Event)機制 .on() .emit() .once() .removeListener()

事件(Event)機制 .on() .emit() .once() .removeListener()

// 事件(Event)機制
const EventEmitter = require('events');
const emitter = new EventEmitter();
// 偵聽一個事件
emitter.on("a", (event) => {
console.log(event + "---監聽到了!\n");
});
// 發出一個事件
emitter.emit("a", "發出事件");

  

on 與 once 的差別
/* on 與 once 的差別
on 會無限制的響應
once 只會響應一次 */
const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on("a", function (e) {
	  console.log('on監聽事件:'+e);
});
emitter.once("a", function (e) {
	  console.log('once監聽事件:'+e);
});
emitter.emit("a", "event");
emitter.emit("a", "event1");
emitter.emit("a", "event2");
/* on監聽事件:event
once監聽事件:event
on監聽事件:event1
on監聽事件:event2 */

  

removeListener 來刪除偵聽的函式
/* removeListener
當然我們偵聽了某個訊息後,不想再偵聽時可用 removeListener 來刪除偵聽的函式
但是前提函式必須是有名字的,並且是變數。如下面的函式 */
const EventEmitter = require('events');
const emitter = new EventEmitter();
const listener = function() {
	  console.log('listener invoked!');
};
emitter.on("a", listener);
emitter.emit("a", "event");
console.log('event send!');
console.log('before remove');
emitter.removeListener("a", listener);
console.log('after remove');
emitter.emit("a", "event2");