發布-訂閱模式又叫觀察者模式,它定義物件間的一對多的依賴關係,當乙個物件的狀態發生變化時,所有訂閱它的物件都將得到通知;實現發布-訂閱模式有以下幾步:
// event.js
let event = ,
/*** @param key
* @param fn
*/subscribe: function (key, fn)
this.clientobj[key].push(fn)
},publish: function ()
fns.foreach(fn => )
},/** @param key */
unsubscribe (key) ,
unsubscribeall ()
},}/**
* @describe 維護乙個方法,為物件安裝發布-訂閱功能
*/export const eventmitt = function (obj)
}// 使用,index.js
import from './event.js'
let event = {}
eventmitt(event)
event.subscribe('flag1', (val) => )
event.subscribe('flag2', (val) => )
event.publish('flag1', 'test1')
event.publish('flag2', 'test2')
參考:// event.js
export class eventmitt
} publish ()
fns.foreach(fn => )
} /**
* @param key
* @param fn
*/subscribe (key, fn)
this.clientobj[key].push(fn)
} /** @param key */
unsubscribe (key)
unsubscribeall ()
}}// 使用,index.js
import from './event.js'
const eventmitt = new eventmitt()
eventmitt.subscribe('flag1', (val) => )
eventmitt.subscribe('flag2', (val) => )
eventmitt.publish('flag1', 'test1')
eventmitt.publish('flag2', 'test2')
《j**ascript設計模式與實踐開發》
3 1 7 發布訂閱模式
發布訂閱模式和觀察者模式是兩種設計模式,在 vue 中有各自的應用場景。兩種模式的本質是相同的,但是還是有區別的,經常被混為一談。我們假定,存在乙個 訊號中心 某個任務執行完畢,就向訊號中心 發布 publish 乙個訊號,其他任務可以向訊號中心 訂閱 subscribe 這個訊號,從開知道什麼時候...
redis學習筆記05 發布訂閱模式
由於redis訊息佇列並不支援多播機制,即生產者產出一次,由中介軟體複製傳送給多個消費者的機制,為了彌補這個不足,單獨引入了發布訂閱模式的模組。使用方式如下 生產者 import redis client redis.strictredis client.publish ll pythonbooks...
ES6發布訂閱設計模式實現
發布訂閱就是將所有事件發到乙個池子 陣列 中,期間可以增減方法,要使用的時候統一依次執行,引數只能傳相同的。期間要解決的問題是陣列去重 陣列塌陷。let subsribe add func remove func fire args 優化 不用每次都要new 直接呼叫方法就行了 return new...