public on (topic: string, subscriber: Subscriber) { if (!this.eventMap[topic]) { this.eventMap[topic] = [] } this.eventMap[topic].push(subscriber) }
public off (topic: string, subscriber: Subscriber) { if (!this.eventMap[topic]) { return } this.eventMap[topic] = this.eventMap[topic].filter(s => s !== subscriber); }
public emit (topic: string, message: string) { if (!this.eventMap[topic]) { return; } // console.log('emit', this.eventMap[topic]) this.eventMap[topic].forEach(s => s.receive(message)); }
}
// 使用示例 const eventBus = new EventBus() const subscribeOne = new Subscriber() const subscribeTwo = new Subscriber() eventBus.on('topic1', subscribeOne); eventBus.on('topic1', subscribeTwo); eventBus.on('topic2', subscribeTwo) eventBus.emit('topic1', 'this is topic1') eventBus.emit('topic2', 'this is topic2')