zoukankan      html  css  js  c++  java
  • 4.js模式-发布-订阅模式

    1. 发布-订阅模式

    var observe = (function(){

          var events = {},

                 listen,

                 trigger,

                 remmove;

         

          listen = function(key,fn){

                 if(!events[key]){

                        events[key] = [];

                 }

                

                 events[key].push(fn);

          };

         

          trigger = function(){

                 var key = Array.prototype.shift.call(arguments);

                 var fns = events[key];

                 if(!fns || fns.length === 0){

                        return false;

                 }

                

                 for(var i=0,fn;fn=fns[i++];){

                        fn.apply(this,arguments);

                 }

          };

         

          remove = function(key,fn){

                 var fns = events[key];

                 if(!fns){

                        return false;

                 }

                 if(!fn){

                        fns && (fns.length=0);

                 }else{

                        for(var l =fns.length -1;l>=0;l--){

                               var _fn = fns[l];

                               if(_fn===fn){

                                      fns.splice(l,1);

                               }

                        }

                 }

          };

         

          return {

                 listen:listen,

                 trigger:trigger,

                 remove:remove

          }

    })();

    • observe.listen('xx',function(price){

          console.log(price);

    });

    observe.trigger('xx',2000);

  • 相关阅读:
    openfire 介绍安装使用
    android rabbitMQ
    转:socket编程在windows和linux下的区别
    socklen_t在windows和linux平台下的头文件定义
    libevent入门教程
    libevent安装
    《RabbitMQ in action》
    RabbitMQ安装和配置
    node.js模块之http模块
    node.js模块之Buffer模块
  • 原文地址:https://www.cnblogs.com/SLchuck/p/4869713.html
Copyright © 2011-2022 走看看