发布订阅模式:
他俩之间需要中介来实现,发布者和订阅者是平级关系。他们之前的联系是通过中介来实现。
而观察者模式中观察者是需要保存在被观察中的。
let fs = require('fs');
let event ={
subArr:[],//中介(既不属于on也不属于emit)
on(fn){//订阅
this.subArr.push(fn);
},
emit(){//发布
this.subArr.forEach(fn=>fn())
}
}
let person ={}
// 可以绑定多个函数
event.on(()=>{//这个函数不会立即执行
console.log("读取了一个文件");
})
//当person有两个属性时触发
event.on(()=>{
if(Object.keys(person).length==2){
console.log(person);
}
})
fs.readFile('./hello.txt','utf8',function(err,data){
event.emit();
})
fs.readFile('./world.txt','utf8',function(err,data){
person.age = data;
event.emit();
})
输出内容如下: