zoukankan      html  css  js  c++  java
  • 发布/订阅模式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>发布&订阅模式</title>
    <script>
    var PubSub = {
      subscribe: function (ev, callback) {
            // 创建 _callbacks 对象,除非它已经存在了
            var calls = this._callbacks || (this._callbacks = {});
            
            // 针对给定的事件 key 创建一个数组,除非这个数组已经存在
            // 然后将毁掉函数追加到这个数组中
            (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback);
            return this;
        },
        
        publish: function () {
            // 将 arguments 对象转化为真正的数组
            var args = Array.prototype.slice.call(arguments, 0);
            
            // 拿出第 1 个参数,即事件名称
            var ev = args.shift();
            
            // 如果不存在,_callbacks 对象,则返回
            // 或者如果不包含给定事件对应的数组
            var list, calls, i, l;
            if (!(calls = this._callbacks)) return this;
            if (!(list = this._callbacks[ev])) return this;
            
            // 触发回调
            for (var i = 0, l = list.length; i < l; i++) {
                list[i].apply(this, args);
            }
            return this;
        }
    };
    
    // 使用方法
    PubSub.subscribe('wem', function () {
        alert('Wem');
    });
    
    PubSub.publish('wem');
    </script>
    </head>
    
    <body>
    </body>
    </html>
  • 相关阅读:
    java环境变量的配置
    usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示
    虚拟机安装tools for Ubuntu
    ubuntu 修改root密码
    旺旺自动回复
    android 启动流程
    ASCII 码表
    电脑中快速查找东西
    appengine 云计算。 部署web网络。
    openssl-0.9.8k_WIN32(RSA密钥生成工具
  • 原文地址:https://www.cnblogs.com/baie/p/2985223.html
Copyright © 2011-2022 走看看