zoukankan      html  css  js  c++  java
  • 原生js《发布订阅》功能

    原生js的“eventemitter 发布订阅”其实跟vue的“bus 中央事件总线”是同一种东西,而我只是用js实现一版出来而已

    组件代码:

    (function () {
        var msgService = function msgService() {};
        msgService.prototype.on = function (name, callback) { // 接收
            var callbacks = this[name];
            if (callbacks) {
                callbacks.push(callback);
            } else {
                this[name] = [callback];
            }
        };
        msgService.prototype.dispatch = function (name, option) { // 广播
            let callbacks = this[name];
            callbacks && callbacks.forEach((callback) => callback(option));
        };
        window.msgService = msgService;
    })()

    调用代码:

    var MsgService = new msgService();
    MsgService.on("test1", function (data) {
         // 接收函数被触发后做点事情
      console.log("test1被调用:", data);
    });
    MsgService.dispatch("test1", "我是传参"); // 可重复调用多次
    MsgService.dispatch("test1", "我是传参"); // 可重复调用多次
    MsgService.dispatch("test1", "我是传参"); // 可重复调用多次

    MsgService.on("test2", function (data) { // 接收函数被触发后做点事情 console.log("test2被调用:", data); }); MsgService.dispatch("test2", "我是传参"); // 可重复调用多次 MsgService.dispatch("test2", "我是传参"); // 可重复调用多次 MsgService.dispatch("test2", "我是传参"); // 可重复调用多次
  • 相关阅读:
    UVA 12307 Smallest Enclosing Rectangle
    UVALive 4728 Squares
    扩栈代码
    uva 10256 The Great Divide
    uva 11168 Airport
    uva 10625 Board Wrapping
    bzoj千题计划206:bzoj1076: [SCOI2008]奖励关
    NOIP2017 列队
    bzoj3529: [Sdoi2014]数表
    bzoj1966: [Ahoi2005]VIRUS 病毒检测
  • 原文地址:https://www.cnblogs.com/konghaowei/p/14036072.html
Copyright © 2011-2022 走看看