zoukankan      html  css  js  c++  java
  • JavaScript异步编程(二) 分布式事件

    分布式事件

    发布/订阅模式分发事件

      ・PubSub模式

        浏览器允许向DOM元素附加事件处理器;

       

        Node的EventEmitter对象

        emitter.on(‘evacuate’, function() {…});

        emitter.emit(‘evacuate’);

        emit意为触发,负责调用给定事件类型的所有处理器

        创建自己的PubSub

        PubSub.on = function(eventType, handler) {

            if(!(eventType in this.handlers)) {

                 this.handlers[eventType] = handler;

                 return this;

           }

       };

        PubSub.emit = function(eventType) {

              var handlerArgs = Array.prototype.slice.call(arguments, 1);

              for(var i =0; i < this.handlers[eventType].length; i++) {

                   this.handlers[eventType][i].apply(this, handlerArgs);

              }

              return this;

        };

        jQuery的名称空间化事件

        如果同时绑定了名称为click.tbb和hover.tbb两个事件,简单地调用unbind(‘.tbb’)就可以同时解绑它们。

        jQuery还支持用空格隔开多个事件来同时绑定或触发多种事件类型。

        同步性

        PubSub模式是一项处理异步事件的重要技术,但内在跟异步没有任何关系。

        PubSub模式简化了事件的命名、分发和堆积。

    ・事件化模型

      只要对象带有PubSub接口,就可以称之为事件化对象。

      特殊情况出现在用于存储数据的对象因内容变化而发布事件是,这里用于存储数据的对象又称作模型。

      老式的JavaScript依靠输入事件的处理器直接改变DOM。

      新式的JavaScript先改变模型,接着由模型触发事件而导致DOM的更新。

      jQuery自定义事件

      在jQuery中,可以使用trigger方法基于任意DOM元素触发任何想要的事件,

      冒泡技术:只要某个DOM元素触发了某个事件,其父元素就会接着触发这个事件,接着是父元素的父元素,以此类推,一直上溯到根元素。

                   只有在冒泡过程中调用事件的stopPropagation方法才会停止。

    PubSub的缺陷在于不适用于一次性事件,一次性事件要求对异步函数执行的一次性任务的两种结果(任务成功或失败)做不同处理。例如,Ajax请求。而用于解决一次性事件问题的工具叫做Promise。

  • 相关阅读:
    TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
    理论基础+实战控制台程序实现AutoFac注入
    C# class 浅拷贝 与 深拷贝
    给定一个矩阵 A, 返回 A 的转置矩阵。
    [弹出消息] C#ShowMessageBox帮助类
    [弹出消息] C#MessageBox帮助类 (转载)
    [XML] C#XMLProcess操作Xml文档的帮助类 (转载)
    [XML] C# XmlHelper操作Xml文档的帮助类 (转载)
    [XML] resources的Xml配置文件 (转载)
    [XML] Resource帮助类
  • 原文地址:https://www.cnblogs.com/dreamerjdw/p/6228717.html
Copyright © 2011-2022 走看看