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

  • 相关阅读:
    [NM]打开NetworkManager和wpa_supplicant的DEBUG接口
    TI am335x am437x PRU
    Ansible and FileBeta
    [gpio]devm_gpiod_get_optional用法
    TCP连接
    STM32云平台连接培训20180814
    select理解
    TypeScript躬行记(1)——数据类型
    React躬行记(15)——React Hooks
    React躬行记(14)——测试框架
  • 原文地址:https://www.cnblogs.com/SLchuck/p/4869713.html
Copyright © 2011-2022 走看看