//http: //nodejs.cn/api/events.html
//引用和类型定义
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
//new lister事件,新的on时间添加,会被提醒
//对应的还有一个removelistener事件,在被remove的时候会被提醒,
myEmitter.on('newListener', (event, listener) => {
//console.log('new listener ', event, listener);
console.log('new listener ', event);
});
//基本用法
myEmitter.on('event', () => {
console.log('触发了一个事件!');
});
myEmitter.emit('event');
//this传递
myEmitter.on('event2', (a, b) => {
console.log(a, " ", b, this); //没有指向emitter
});
myEmitter.on('event2', function (a, b) {
console.log(a, " ", b, this); //this指向emitter
});
myEmitter.emit('event2');
//异步执行
myEmitter.on('event3', (a, b) => {
setImmediate(() => { //这个的作用并不是和明确,需要仔细查看,好像是需要模块执行完之后再执行
console.log(a, " 异步 ", b, this);
});
});
myEmitter.emit('event3', 1, 2);
//只执行一次
myEmitter.once('event4', () => {
console.log("event4 once");
});
myEmitter.emit('event4');
myEmitter.emit('event4');
myEmitter.emit('event4');
//event emiter error的处理
myEmitter.on('error', () => {
console.log("error hahaha");
});
myEmitter.emit('error');
网友评论