理解js中的观察者模式
#理解js中的观察者模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | // 发布者 const publisher = { // 某条通知 publish(pubsub) { // 通过中介者发布一条消息 pubsub.publish('我饿了') } } // 中介者 负责管理 发布者 和 订阅者 之间的事件 const pubsub = { // 订阅者列表 subscribes: [], // 通知订阅者们 publish(msg) { this.subscribes.forEach(someOne => { someOne.update(msg) }) }, // 添加订阅者 subscribe(sub) { this.subscribes.push(sub) } } // 订阅者1(观察者) const subscribe1 = { // 接收发布者的消息 update(msg) { console.log('update a', msg) }, // 将自己加入订阅 subscribe(pubsub) { pubsub.subscribe(this) } } // 订阅者2(观察者) const subscribe2 = { // 接收发布者的消息 update(msg) { console.log('update b', msg) }, // 将自己加入订阅 subscribe(pubsub) { pubsub.subscribe(this) } } // 通过中介者 订阅发布者的消息 subscribe1.subscribe(pubsub) // 通过中介者 订阅发布者的消息 subscribe2.subscribe(pubsub) // 3秒后 发布一个通知 setTimeout(function(){ publisher.publish(pubsub) }, 3000) |