- 微信扫码关注公众号 :前端前端大前端,追求更精致的阅读体验 ,一起来学习啊
- 关注后发送关键资料,免费获取一整套前端系统学习资料和老男孩python系列课程
学习资源推荐
简介
该模式被广泛应用,符合发布订阅,一对n的模式。对于任意的主题,都有任意个的观察者,当主题发生改变,会通知所有的观察者,并执行其update方法获取最新的主题状态
code
class Subject {
constructor() {
this.state = 0;
this.observers=[]
}
getState() {
return this.state;
}
setState(state) {
this.state = state;
this.notifyAllobservers();
}
notifyAllobservers(){
this.observers.forEach(observer=>{
observer.update()
})
}
attach(observer){
this.observers.push(observer)
}
}
class Observer{
constructor(name,subject){
this.name=name;
this.subject=subject;
this.subject.attach(this)
}
update(){
console.log(`观察者:${this.name},状态值:${this.subject.getState()}`)
}
}
var s=new Subject();
var o1=new Observer('o1',s);
var o2=new Observer('o2',s);
var o3=new Observer('o3',s);
s.setState(1)
s.setState(2)
s.setState(3)
应用
node 自定义事件
var events = require('events');
var emitter=new events.EventEmitter();
emitter.on('say',(msg)=>{
console.log(msg)
})
emitter.on('say',(msg)=>{
console.log(msg+' tom')
})
emitter.emit('say','hello')
文件读取
var fs=require('fs')
var readStream=fs.createReadStream('./index.js');
var result=0;
readStream.on('data',(chunk)=>{
result+=chunk.toString().length
})
readStream.on('end',()=>{
console.log(result)
})
其他
- node 原生post请求
- vue,react生命周期