1234567891011121314151617181920212223242526272829303132 |
- const eventBus = {
- // 存储所有事件和对应的订阅者
- eventList: new Map(),
- // 订阅事件
- on(event, callback) {
- if (!this.eventList.has(event)) {
- this.eventList.set(event, new Set())
- }
- this.eventList.get(event).add(callback)
- },
- // 取消订阅事件
- off(event, callback) {
- if (this.eventList.has(event)) {
- const callbacks = this.eventList.get(event)
- callbacks.delete(callback)
- if (callbacks.size === 0) {
- this.eventList.delete(event)
- }
- }
- },
- // 发布事件
- emit(event, ...args) {
- if (this.eventList.has(event)) {
- const callbacks = this.eventList.get(event)
- callbacks.forEach((callback) => {
- callback.call(null, ...args)
- })
- }
- }
- }
- module.exports = eventBus
|