js 實現簡單釋出訂閱模式

流年sugar發表於2024-04-01

1.事件排程器

class EventEmitter {
  constructor() {
    this.events = {};
  }
 
  on(event, listener) {
    if (!this.events[event]) {
      this.events[event] = [];
    }
    this.events[event].push(listener);
  }
 
  emit(event, ...args) {
    if (this.events[event]) {
      this.events[event].forEach(listener => {
        listener.apply(this, args);
      });
    }
  }
}

訂閱事件

// 使用示例
const emitter = new EventEmitter();
 
// 訂閱事件
emitter.on('greeting', (name) => {
  console.log(`Hello, ${name}!`);
});

釋出事件

// 釋出事件
emitter.emit('greeting', 'World'); // 控制檯輸出: Hello, World!

相關文章