js 發布 訂閱者模式

2021-10-19 18:23:52 字數 969 閱讀 4318

/**

* 發布-訂閱模式

* bw 2020/07/29

*/const event = ,

on: function(name, method, target)else

}this.regsiter[name].push();

},emit: function(name) }},

off: function(name, target)

// 移除事件

this.regsiter[name].splice(idx, 1)

if (this.regsiter[name].length === 0) }},

};export default event;

如果是在全域性使用 最好有乙個單例

import event from './event'

const global = global || {};

global.event = event;

export default global;

使用先引入(路徑自己修改)

import global from './global/global'
註冊

global.event.on('testbtn', this.testbtn.bind(this), this);
觸發

//不帶引數

global.event.emit('testbtn');

//帶入引數

global.event.emit('testbtn',);

global.event.emit('testbtn',2222);

刪除

global.event.off('testbtn', this);

js發布訂閱者模式

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

js 中發布與訂閱者模式

之前在unity做遊戲的時候,常常使用到,發布於訂閱者模式。目的是為了解耦。不然 太黏不易維護。他的本質就是做到,發布者唯一的 key 但是訂閱者多個 value 是乙個一對多的關係 let eventmap new map class observe key key值 param args key...

js觀察者模式發布 訂閱

實習期結束,最近回到學校開始學習node.js,node果然是強大。不過在涉及到檔案操作的時候,發現要大量使用非同步回掉操作。以前在寫頁面的時候,從沒這麼多非同步操作,只有在使用 setinterval 和 xmlhttprequest 時了解了一下非同步程式設計。這次在學習node的過程中,把非同...