发布/订阅者模式的js简单实现

548 阅读1分钟
  1. 订阅者注册事件到调度中心
  2. 发布者发布事件到调度中心
  3. 当发布者发布事件的时候,订阅中心统计调度订阅者触发相关事件。

代码

// 创建一个订阅中心
class Bus {
    constructor() {
        this.obj = {}
    }
    on(key, fn) {
        this.obj[key] = fn;
    }
    emit(key, value) {
        this.obj[key].call(this, value);
    }
}
let bus = new Bus();
// 订阅一个name为test1的事件
bus.on('test1', (val) => {
    console.log('test1', 'value:' + val)
});
// 订阅一个name为test2的事件
bus.on('test2', function (val) {
    console.log('test2', 'value:' + val)
});

setTimeout(() => {
    // 触发test1
    bus.emit('test1', 1)
    // 触发test2
    bus.emit('test2', 2)
}, 1000)