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", "我是传参"); // 可重复调用多次
  • 相关阅读:
    c++笔记3
    c++笔记2
    c++笔记1
    零点追踪(零点及量程补偿)
    优秀软件:
    Hart协议
    RL_RTX函数
    keil-rtx
    电源模块选型
    RTX51 Tiny
  • 原文地址:https://www.cnblogs.com/konghaowei/p/14036072.html
Copyright © 2011-2022 走看看