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);

  • 相关阅读:
    quora 中有关angular与emberjs的精彩辩论
    迷你MVVM框架 avalonjs 0.94发布
    重写自己,减少判断 ---- 引发的思考
    JSON数据的优化
    记录全局错误
    Bat相关的项目应用
    C#中如何实现json转化时只处理部分属性
    JSON数据的处理中的特殊字符
    C# .net中json字符串和对象之间的转化方法
    VS调试 ---- 监视窗口、即时窗口、输出窗口
  • 原文地址:https://www.cnblogs.com/SLchuck/p/4869713.html
Copyright © 2011-2022 走看看