一、events模块的常用方法
// 事件总线
const EventsEmitter = require('events');
const emitter = new EventsEmitter();
function HLog(msg){
console.log(msg);
}
// 监听
emitter.on('hlog', HLog);
setTimeout(() => {
// 触发,打印
emitter.emit('hlog', 'hello emitter!')
// 取消监听后,发射的事件就监听不到了
emitter.off('hlog', HLog);
setTimeout(() => {
// 再触发,未打印
emitter.emit('hlog', 'hello emitter again!')
}, 1000);
}, 2000)
二、events模块的其他方法
const EventsEmitter = require('events');
const ee = new EventsEmitter();
ee.on('func1', ()=>{ })
ee.on('func1', ()=>{ })
ee.on('func1', ()=>{ })
ee.on('func2', ()=>{ })
ee.on('func2', ()=>{ })
// 1.获取所有监听事件的名称
console.log(ee.eventNames());
// 2.获取最大的监听个数
console.log(ee.getMaxListeners());
// 3.获取某一个事件名称对应的监听个数
console.log(ee.listenerCount('func1'));
// 4.获取某一个事件名称对应的监听器函数(数组)
console.log(ee.listeners('func1'));
// 5.once:只监听一次
ee.once('func3', ()=> {
console.log('func3!');
})
ee.emit('func3');
ee.emit('func3');
ee.emit('func3');
// 6.prependListener:前置监听
ee.on('func2', ()=>{
console.log('func2 second');
})
ee.prependListener('func2', () => {
console.log('func2 first!');
})
ee.emit('func2');
// 7.prependOnceListener:前置且只监听一次
ee.on('func1', ()=>{
console.log('func1 second');
})
ee.prependOnceListener('func1', () => {
console.log('func1 first!');
})
ee.emit('func1');
ee.emit('func1');
// 8.移除监听
ee.on('func3', ()=> {
console.log('func3!');
})
ee.emit('func3');
ee.removeAllListeners();
ee.emit('func3');