定义
- 观察者模式指的是一个对象(Subject)维持一系列依赖于它的对象(Observer),当有关状态发生变更时 Subject 对象会通知一系列 Observer 对象进行更新。
手写一个订阅发布模式
class Event {
constructor() {
this.listener = {}
}
on() {
let key = Array.prototype.shift.apply(arguments)
let fns = arguments
if (key in this.listener) {
this.listener[key].push(fns[0])
return
}
this.listener[key] = [fns[0]]
}
emit() {
let key = Array.prototype.shift.apply(arguments);
console.log(this.listener[key])
for (let cd of this.listener[key]) {
cd()
}
}
}
let event = new Event()
let f1 = function () {
console.log('点击了')
}
let f2 = function () {
console.log('点击了22222')
}
event.on('click')
event.on('click')
event.emit('click')
click 事件有两个订阅者(f1,f2),当emit后,两个订阅者得到通知。
这就是最简单发布/订阅模式。
- nodeJs的事件订阅发布/事件驱动
const Event = require('events')
let event = new Event.EventEmitter();
function dirtyTalk(name){
console.log(`${name},oh,yes,oh,Yes!`)
}
event.on('fuck',dirtyTalk)
setTimeout(function() {
event.emit('fuck','jack');
}, 1000);
网友评论