zoukankan      html  css  js  c++  java
  • Events模块

     
          
         
       
    一、关于on、trigger
    (1)、on、trigger是观察者模式的实现。各观察者注册主题数据的监听,当主题数据发生变化时,各观察者执行自己的回调,处理业务逻辑。
    (2)、on实现原理
    示例:dataModel.on('dataChange', function(){});
    on方法内部为dataModel创建对象属性_events,数据结构为 {eventType : [callbackFunList]} 为不同的类型的自定义事件维护一个回调函数列表。通过on方法将对应的回调push到对应的列表。
    需要注意的是,on方法在将回调push到对应的列表时,并没有判断该回调函数的指针在列表中是否已经存在,示例:
    以上的实力代码将会打印两次:repeat repeat repeat repeat!
     
    (3)、trigger实现原理
     
    示例:dataModel.trigger('dataChange', {columnId : 1});
    访问dataModel的属性_events,根据事件类型(dataChange)取出回调函数列表,循环执行列表中的回调函数。通过数组保证执行顺序与绑定顺序的一致性。
    最后我们看一下139邮箱云邮局我的报刊模块的模型层的_events对象:
    (4)、once实现原理。通过once绑定的事件,执行一次后就被销毁。

     

  • 相关阅读:
    利用opengl画一个水波的曲面
    Eclipse 使用OpenGL
    Javascript学习过程(二)
    Workflow Learing
    YAWL设计实例
    YAWL使用方法
    ImageJ二次开发学习纪录之初步体会
    [LeetCode 660] Remove 9
    [LeetCode 1542] Find Longest Awesome Substring
    [LeetCode 879] Profitable Schemes
  • 原文地址:https://www.cnblogs.com/hellohuman/p/3840816.html
Copyright © 2011-2022 走看看