美文网首页Vue
vue中eventBus的实现原理

vue中eventBus的实现原理

作者: wave浪儿 | 来源:发表于2020-07-29 15:26 被阅读0次

    1.概念
    EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式,称为发布订阅者模式。

    1. on('name', fn)订阅消息,name:订阅的消息名称, fn: 订阅的消息
    2. emit('name', args)发布消息, name:发布的消息名称 , args:发布的消息

    2.实现

    class Bus {
      constructor () {
        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))
        }
      }
    }
    

    2.使用

    const EventBus = new EventBusClass()
    EventBus.on('fn1', function(msg) {
        alert(`订阅的消息是:${msg}`);
    });
    EventBus.emit('fn1', '你好,世界!');
    

    注:只不过在vue中已经替我们实现好了$emit,$on这些方法,所以直接用的时候去 new Vue()就可以了.

    相关文章

      网友评论

        本文标题:vue中eventBus的实现原理

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