自定义Eventbus 发布订阅模式

作者: tww844475003 分类: 前端开发 发布时间: 2021-05-24 21:44
const EventList = {};

const on = function(eventName, callback) {
  if (!EventList[eventName]) {
    EventList[eventName] = [];
  }

  EventList[eventName].push(callback);
}

const emit = function(eventName, params) {
  if (!EventList[eventName]) return;

  EventList[eventName].map((cb) => {
    cb(params);
  })
}

const off = function(eventName, callback) {
  if (!EventList[eventName]) return;

  if (callback) {
    let index = EventList[eventName].indexOf(callback);

    EventList[eventName].splice(index, 1);
  } else {
    EventList[eventName] = [];
  }
}

export default {
  $on: on,
  $emit: emit,
  $off: off
}
前端开发那点事
微信公众号搜索“前端开发那点事”

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注