1、事件原理
const fs = require("fs");
let wbEvent = {
event:{
//"wbFunc":[fn1,fn2,fn3]保存当前函数的事件队列
},//包含有哪些事件
on:function(funcName,func){
if(this.event[funcName]){//如果存在则加入这个函数队列中
this.event[funcName].push(func);
}else{//如果不存在这个函数队列就新建队列
this.event[funcName] = [func];
}
},
emit:function(funcName,msgData){
if(this.event[funcName]){
this.event[funcName].forEach(funcItem => {
funcItem(msgData);//执行事件队列中的函数
});
}
}
}
fs.readFile("txt.txt",{
encoding:"utf-8"
},(err,data)=>{
if(err) throw err;
//console.log(data);
//读取完成之后需调用三个步骤,如果将三个步骤代码全部写到一起,影响后期维护
//1.连接数据库操作
//2.数据格式化操作
//3.数据渲染操作
wbEvent.emit("wbFunc",data);
});
wbEvent.on("wbFunc",(msgData)=>{
console.log("1.连接数据库操作",msgData);
});
wbEvent.on("wbFunc",(msgData)=>{
console.log("2.数据格式化操作",msgData);
});
wbEvent.on("wbFunc",(msgData)=>{
console.log("3.数据渲染操作",msgData);
})
2、使用案例
const events = require("events");
const fs = require("fs");
let ee = new events.EventEmitter();
ee.on("wbFunc",(msgData)=>{
console.log("第一步执行:",msgData);
});
ee.on("wbFunc",(msgData)=>{
console.log("第二步执行:",msgData);
});
ee.on("wbFunc",(msgData)=>{
console.log("第三步执行:",msgData);
});
fs.readFile("txt.txt",{
encoding:"utf-8"
},(err,data)=>{
if(err) throw err;
ee.emit("wbFunc",data);
});