nodejs的事件EventEmitter
來源:程序員人生 發布時間:2015-05-08 07:38:45 閱讀次數:3323次
直接上代碼:
// 得到EventEmitter對象
var EventEmitter = require('events').EventEmitter;
var eventEmitter = new EventEmitter();
var EVENT_NAME = 'some_event'; // 事件名
// **********************************************************
// 注冊1個事件some_event
// **********************************************************
// 回調函數
var callback = function(arg1, arg2){
console.log(EVENT_NAME + ' listener1' + arg1 + ' ' + arg2);
};
// 參數1:事件名,參數2:回調函數
eventEmitter.on(EVENT_NAME, callback);
// 單次事件,監聽器最多只會觸發1次,觸發后立刻消除該監聽器
eventEmitter.once(EVENT_NAME,function(arg1, arg2){
console.log(EVENT_NAME + ' listener2' + arg1 + ' ' + arg2);
});
// **********************************************************
// 利用延時函數,觸發事件
// **********************************************************
setTimeout(function(){
eventEmitter.emit(EVENT_NAME, 'One', 1);
},1000);
setTimeout(function(){
eventEmitter.emit(EVENT_NAME, 'Two', 2);
},2000);
// 移除事件
setTimeout(function(){
console.log('remove');
eventEmitter.removeListener(EVENT_NAME, callback);// 移除事件指定的監聽器
eventEmitter.removeAllListeners(EVENT_NAME);// 移除事件的所有監聽器
},3000);
// error 事件:EventEmitter 規定如果沒有響 應的監聽器,Node.js 會把它當作異常,退出程序并打印調用棧。
// 所以1般要為會發射 error 事件的對象設置監聽器,避免遇到毛病后全部程序崩潰
輸出結果:

首先我們require了事件模塊,定義了時間對象,然后注冊了1個事件及其回調。
最后,我們利用延時函數來控制時間的觸發。
可以看到,注冊的單次事件觸發1次就會被移除。
而普通事件,每次都會被觸發。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈