JavaScript异步编程教程(2)分布式事件
沉沙 2018-10-25 来源 : 阅读 1208 评论 0

摘要:本篇教程介绍了JavaScript异步编程教程(2)分布式事件,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript异步编程教程(2)分布式事件,希望阅读本篇文章以后大家有所收获,帮助大家对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。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程