# JavaScript如何實現發布訂閱EventEmitter
## 什么是發布訂閱模式?
發布訂閱模式(Pub/Sub)是一種消息通信范式,允許組件間通過事件進行松耦合通信。發布者(Publisher)觸發事件,訂閱者(Subscriber)監聽事件并執行回調,兩者無需直接交互。
## 實現基礎EventEmitter
以下是一個簡化版EventEmitter實現:
```javascript
class EventEmitter {
constructor() {
this.events = {};
}
// 訂閱事件
on(eventName, callback) {
if (!this.events[eventName]) {
this.events[eventName] = [];
}
this.events[eventName].push(callback);
}
// 發布事件
emit(eventName, ...args) {
const callbacks = this.events[eventName];
if (callbacks) {
callbacks.forEach(cb => cb(...args));
}
}
// 取消訂閱
off(eventName, callback) {
const callbacks = this.events[eventName];
if (callbacks) {
this.events[eventName] = callbacks.filter(cb => cb !== callback);
}
}
}
events
對象以{ 事件名: [回調函數數組] }
格式存儲訂閱關系on()
將回調函數注冊到對應事件隊列emit()
觸發事件時同步執行所有訂閱回調off()
從事件隊列中移除特定回調通過約50行代碼即可實現核心功能,體現了JavaScript基于原型的事件系統靈活性。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。