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);
});