发布订阅模式
发布订阅模式分成两个部分:订阅和发布没有明显的关联
- on(订阅):就是把一些函数维护到一个数组中
- emit(发布):就是让数组中的函数依次执行
下面用发布订阅模式实现多个异步请求同时获取最终结果:
let fs = require("fs");
let person = {
};
let event = {
arr: [],
on(fn) {
this.arr.push(fn);
},
emit() {
this.arr.forEach((fn) => fn());
},
};
event.on(function () {
if (Object.keys(person).length === 2) {
console.log("event--person--->", person);
}
});
fs.readFile("./file/name.txt", "utf-8", function (err, data) {
console.log("name.txt--->", err, data);
person.name = data;
event.emit();
});
fs.readFile("./file/age.txt", "utf-8", function (err, data) {
console.log("age.txt--->", err, data);
person.age = data;
event.emit();
});