//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('觸發(fā)了一個事件!');
});
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');
//異步執(zhí)行
myEmitter.on('event3', (a, b) => {
setImmediate(() => { //這個的作用并不是和明確,需要仔細查看,好像是需要模塊執(zhí)行完之后再執(zhí)行
console.log(a, " 異步 ", b, this);
});
});
myEmitter.emit('event3', 1, 2);
//只執(zhí)行一次
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');