class PubSub { constructor() { this.subscribers = {}; } subscribe(event, callback) { if (!(event in this.subscribers)) { this.subscribers[event] = []; } this.subscribers[event].push(callback); } unsubscribe(event, callback) { if (!(event in this.subscribers)) { return; } const index = this.subscribers[event].indexOf(callback); if (index > -1) { this.subscribers[event].splice(index, 1); } } publish(event, data) { if (!(event in this.subscribers)) { return; } this.subscribers[event].forEach(callback => { callback(data); }); } } // 用法示例 const pubsub = new PubSub(); // 订阅事件 pubsub.subscribe('event1', data => { console.log('订阅者1接收到数据:', data); }); pubsub.subscribe('event1', data => { console.log('订阅者2接收到数据:', data); }); pubsub.subscribe('event2', data => { console.log('订阅者3接收到数据:', data); }); // 发布事件 pubsub.publish('event1', 'Hello World'); // 取消订阅 pubsub.unsubscribe('event1', callback1); ``` 在上述示例中,`PubSub` 类表示一个发布-订阅模式的实现。它具有三个方法: - `subscribe(event, callback)`:订阅事件,将回调函数添加到特定事件的订阅者列表中。 - `unsubscribe(event, callback)`:取消订阅事件,从特定事件的订阅者列表中删除指定的回调函数。 - `publish(event, data)`:发布事件,将数据传递给特定事件的所有订阅者。 你可以根据需要调用这些方法来发布和订阅事件。
标签:订阅,callback,发布,subscribers,data,event,pubsub From: https://www.cnblogs.com/flyboy-fb/p/17649823.html