发布订阅模式
/*
1.与观察者模式不同,发布订阅模式发布和订阅之间没有明显的关联
2.需要有中介者,就是队列数组arr
*/
let fs = require("fs");
let event = {
arr: [],
on: function (fn) {
this.arr.push(fn); // 发布:先把当前想要处理的内容放到队列中
},
emit: function () {
this.arr.forEach((fn) => fn()); // 在订阅的时候执行
},
};
event.on(() => {
console.log(obj); // { a: '1', b: '2' }
});
let obj = {};
fs.readFile("./1.txt", "utf8", (err, data) => {
obj.a = data;
});
fs.readFile("./2.txt", "utf8", (err, data) => {
obj.b = data;
event.emit();
});