美文网首页
手动实现简单的Bus总线

手动实现简单的Bus总线

作者: key君 | 来源:发表于2019-10-06 14:41 被阅读0次

    on事件里把传入的事件名作为key 回调函数作为value放在数组中 在emit里面遍历数组 取出函数 执行函数

    main.js
    import Bus from './utils/bus';
    Vue.prototype.$bus = new Bus();
    
    bus.js
    export default class Bus {
      constructor() {
        // {
        //   eventName1:[fn1,fn2],
        //   eventName2:[fn3,fn4],
        // }
        this.callbacks = {};
      }
      $on(name, fn) {
        this.callbacks[name] = this.callbacks[name] || [];
        this.callbacks[name].push(fn);
      }
      $emit(name, args) {
        if (this.callbacks[name]) {
          // 存在 遍历所有callback
          this.callbacks[name].forEach(cb => cb(args));
        }
      }
    }
    
    使用
    //派发
    this.$bus.$emit('event-bus','测试eventBus')
    //接收
    this.$bus.$on("event-bus", msg => {
          this.msg = "接收event-bus消息:" + msg;
        });
    

    相关文章

      网友评论

          本文标题:手动实现简单的Bus总线

          本文链接:https://www.haomeiwen.com/subject/rluupctx.html