zoukankan      html  css  js  c++  java
  • node event中 on emit off 的封装

    事件绑定一个事件名称对应多个事件函数 应此它们的关系是一对多的关系 数据类型采用对象的形式
    key:val 因为函数有多个 所以val选用数组


    事件仓库

    eventList = {


    key:val,
    key:val

    }

    let eventList = {};
    

      

    1.绑定事件

                 on(eventName,cb){}


                      第一步判断当前事件是否存在 如果不存在 初始化一下 key:[] 然后在将cb push到数据中去即可

                  

    const $on=(eventName,cb)=>{
    
        if(!eventList[eventName]){
            eventList[eventName] = [];
        }
        eventList[eventName].push(cb)
    }
    

      2.触发事件

                    emit(eventName,params){}

                    第一步判断事件名称是否存在 如果存在 遍历数组中的所有函数调用即可 如果params存在 将params传递函数中

         

    const $emit = (eventName,params)=>{
    
        if(eventList[eventName]){
            let arr = eventList[eventName];
            arr.map((cb)=>{
                cb(params)
            })
        }
    }
    

      3.解绑事件

               off(eventName,cb){}


                 第一步判断事件名称是否存在 如果存在 再次判断第二个参数是否存在 如果存在将这个cb从当前数组中移除
                 如果第二个参数不存在 清空数据

    const $off = (eventName,cb)=>{
        if(eventList[eventName]){
            if(cb){
                let index = eventList[eventName].indexOf(cb);
                eventList[eventName].splice(index,1);
    
            }else{
                eventList[eventName].length = 0;
                
            }
        }
    }

     

     

  • 相关阅读:
    bzoj4152 [AMPPZ2014]The Captain
    bzoj2429 [HAOI2006]聪明的猴子
    bzoj1196 [HNOI2006]公路修建问题
    bzoj1083 [SCOI2005]繁忙的都市
    bzoj1050 [HAOI2006]旅行comf
    bzoj1088 [SCOI2005]扫雷Mine
    bzoj1085 [SCOI2005]骑士精神
    bzoj3437 小P的牧场
    bzoj1296 [SCOI2009]粉刷匠
    A1046 Shortest Distance (20)(20 分)
  • 原文地址:https://www.cnblogs.com/9420i/p/10245937.html
Copyright © 2011-2022 走看看