js 中發布與訂閱者模式

2021-10-07 02:29:30 字數 1308 閱讀 7695

之前在unity做遊戲的時候,常常使用到,發布於訂閱者模式。目的是為了解耦。不然**太黏不易維護。

他的本質就是做到,發布者唯一的(key),但是訂閱者多個(value)      是乙個一對多的關係

let eventmap = new map();

class observe key key值

* @param args key之外的所有引數

*/emit(key,...args),請仔細檢查`);

return

}let eventarray = eventmap.get(key)

console.log('eventarray:',eventarray)

eventarray.foreach(event => );

}/**

* 收集訂閱 與訂閱對應的方法 可以乙個關鍵字對應多個方法

* @param key 訂閱的關鍵字

* @param event 關鍵字對應的方法

*/addevent(key,event),請更換為其他關鍵字`);

// }

if(typeof key !='string')型別,請更改為string`);

}if(typeof event !='function')型別,請更改為function`);

}let eventarray = ;

if(eventmap.has(key))

eventarray.push(event)

eventmap.set(key, eventarray);

} }//單例

let instance=null;

//建立乙個單例

function getinstance()

return instance;

} export default getinstance();

//例項

//improt observe from "../observe" 這個 匯出的時候注意

//同乙個關鍵字可以訂閱多個方法

// 事件的訂閱1

// observe.addevent('play',function(info))

// 事件的訂閱2

// observe.addevent('play',function(info))

// 事件的分發 ,'hello world' 為引數 可以傳 可不傳

// observe.emit('play',,'hello world');

js發布訂閱者模式

發布 訂閱模式可以用乙個全域性的 event 物件來實現,訂閱者不需要了解訊息來自哪個發布者,發布者也不知道訊息會推送給哪些訂閱者,event 作為乙個類似 中介者 的角色,把訂閱者和發布者聯絡起來。統一訊息管理,將訊息傳送給所有訂閱這個訊息型別的模組 採用 訂閱 發布 觀察者 這種設計模組式開發 ...

js 發布 訂閱者模式

發布 訂閱模式 bw 2020 07 29 const event on function name,method,target else this.regsiter name push emit function name off function name,target 移除事件 this.re...

Redis中發布 訂閱模式

redis 的發布與訂閱功能可以讓使用者將訊息同時傳送給多個客戶端。這個功能由幾個不同的角色 協作組成 發布者 publisher 發布訊息的客戶端。頻道 channel 構建在伺服器內部,負責接收發布者傳送的訊息,並將訊息 給頻道的訂閱者。模式 pattern 構建在伺服器內部,負責對頻道進行匹配...