ts發布訂閱模式 實現

2021-09-05 08:54:28 字數 2300 閱讀 2202

即所謂的事件派發(eventdispatch)。

事件派發者eventdispatcher的任務就是排程中心,類似**交換機,接受訊號,然後**給目標。

事件派發者eventdispatcher通常提供三個方法

1. 儲存收聽者 addeventlistener

eventdispatcher.getinstance().addeventlistener('event1', message =>

console.log('event1: ', message)

)

2. 移除收聽者 removeeventlistener

eventdispatcher.getinstance().removeeventlistener('event1')
3. 派發訊息 dispatchevent

eventdispatcher.getinstance().dispatchevent('event1', 'how is it going?')
除此之外,事件派發者eventdispatcher還需要乙個儲存收聽者的容器

/**

*eventlist

** @private

* @type

* @memberof eventdispatcher

*/private eventlist: event

event事件的資料結構

/**

*listener

* * @inte***ce listener

*/inte***ce listener

/** *event

* * @inte***ce event

*/inte***ce event

最後,事件派發者eventdispatcher也應該是單例類。

完整**

/*

* @author: ak-12

* @date: 2018-12-10 12:25:34

* @last modified by: ak-12

* @last modified time: 2018-12-10 12:36:23

*//**

*listener

* * @inte***ce listener

*/inte***ce listener

/** *event

* * @inte***ce event

*/inte***ce event

/** *eventdispatcher

* * @export

* @class eventdispatcher

*/export default class eventdispatcher

private static instance: eventdispatcher

/***eventdispatcher

** @static

* @returns

* @memberof eventdispatcher

*/static getinstance(): eventdispatcher

/***eventlist

** @private

* @type

* @memberof eventdispatcher

*/private eventlist: event

/***addeventlistener

** @param name

* @param listener

* @memberof eventdispatcher

*/public addeventlistener(name: string, listener: listener): void )

} /**

*removeeventlistener

** @param name

* @memberof eventdispatcher

*/public removeeventlistener(name: string): void

/***dispatchevent

** @param name

* @param [message]

* @memberof eventdispatcher

*/public dispatchevent(name: string, message?: any): void

}

Redis發布訂閱模式實現

redisutil工具類 public class redisutil 發布訊息 public static void publish string channel,string message 訂閱訊息 public static void subscribe jedispubsub jedisp...

發布訂閱模式 Redis實現

python開發 實現redis中的發布訂閱功能 redis中的發布 訂閱模型是一種消費通訊模式,下面將對這一功能進行python 的實現。from redis import strictredis class redishelper object 封裝redis發布訂閱類 def init sel...

發布 訂閱模式

發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....