var EventEmitter=require('events').EventEmitter var life=new EventEmitter(); //comfort 求安慰,函數名; //fondness 求溺愛,函數名; //官方建議,事件監聽的最大數量不要超過10個,太多的話可能會導致內存的泄漏,當然這個值是可以修改的,通過setMaxListeners()方法修改; life.setMaxListeners(3) life.on('comfort',function(who){//監聽,求安慰, console.log('給'+who+'倒水!'); }) life.on('comfort',function(who){//監聽,求安慰, console.log('給'+who+'揉肩'); }) life.on('comfort',zuofan); function zuofan(who){ console.log('給'+who+'做飯'); } life.on('fondness',maiyifu); life.on('fondness',jiaogongzi); function maiyifu(who){ console.log('給'+who+'買衣服'); } function jiaogongzi(who){ console.log('給'+who+'交工資'); } //life.removeListener('comfort',zuofan); //移除事件; life.emit('comfort','老公')//調用事件 life.emit('fondness','老婆')//調用事件 //console.log(life.emit('comfort','老公'))//是否調用事件,返回true,false; console.log('給老公做的事情:'+life.listeners('comfort').length)//事件的個數; console.log('給老婆做的事情:'+life.listeners('fondness').length)//事件的個數;
打開CMD,運行node events.js,如下圖所示:
首先監聽事件,然后用emit()方法來調用,移除事件為removeListener()方法;
需要注意的是,監聽事件可以傳入匿名函數也可以傳入實名函數,但是移除事件的時候,必須傳入實名函數,傳入匿名函數會有錯誤;