第一 Events模塊概述node
Events模塊是Node對「發佈/訂閱」模式(publish/subscribe)的實現。一個對象經過這個模塊,向另外一個對象傳遞消息。函數
Node中的Event模塊僅僅提供了一個對象: EventEmitter, EventEmitter 的核心就是事件觸發與事件監聽器功能的封裝。ui
獲取EventEmitter對象code
//51testing
//引用模塊events, 點語法獲取到EventEmitter
varrequire'events'EventEmitter =().EventEmitter;
//初始化一個對象, 這個實例就是消息中心。
varnewemitter =EventEmitter;
第二 EventEmitter 實例對象的方法對象
2.1 emitter.on(eventName, listener), 監聽事件,若是觸發就調用回調函數事件
<String><Symbol>1. eventName|:事件名稱,後邊能夠跟上函數;
<Function>2. listener:回調函數;
2.2 emitter.emit(eventName[, ...args]), 根據eventName發送通知, 觸發事件, 第一個參數爲事件名稱, 其他的參數會依次傳入回調函數rem
2.3 emitter.once(eventName, listener), 相似on方法, 但回調函數只是執行一次get
2.4 emitter.addListener(eventName, listener)相似於emitter.on(eventName, listener)回調函數
2.5 emitter.removeListener(eventName, listener), 移除監聽it
詳細見實例代碼:
var EventEmitter = require('events').EventEmitter;
var emitter = new EventEmitter();
//定義一個函數
var removeFun = function(){
console.log('輸出結果');
}
//以fun名稱監聽removeFun
emitter.on('fun', removeFun);
//每一個30毫秒觸發一次回調函數
setInterval(function(){
emitter.emit('fun');
}, 30);
//200毫秒之後觸發回調函數
setTimeout(function(){
emitter.removeListener('fun', removeFun);
}, 200);
打印結果
$ node 5removeListener.js
輸出結果
輸出結果
輸出結果
輸出結果
輸出結果
#光標中止