博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS异步那些事 二 (分布式事件)
阅读量:6717 次
发布时间:2019-06-25

本文共 884 字,大约阅读时间需要 2 分钟。

分布式事件

PubSub模式

从原生的js角度,我们要监听某事件的方法就是利用addEventListener方法,但是当我们的页面趋于复杂,比如要向某个元素添加多个处理事件,那么就要用一个封装函数汇集多个处理函数

link.onclick = function() {    clickHandler1.apply(this, arguments);    clickHandler2.apply(this, arguments);};

在jquery中,jquery.on()方法使用的比较多,在新版的jquery中,也舍弃了bind()方法,统一使用on,jQuery 将link 元素的事件发布给了任何想订阅此事件的人。

Node.js中的EventEmitter 对象

要想给EventEmitter 对象添加一个事件处理器,只要以事件类型和事件处理器为参数调用on 方法即可。

emitter.on('evacuate', function(message) {    console.log(message);});

emit(意为“触发”)方法负责调用给定事件类型的所有处理器。举个例子,下面这行代码:

emitter.emit('evacuate');

将调用evacuate 事件的所有处理器。

请注意,这里的术语事件跟事件队列没有任何关系。

使用emit 方法触发事件时,可以添加任意多的附加参数。所有参数均传递至所有处理器。

emitter.emit('evacuate', 'Woman and children first!');

事件名称不存在任何限制,然而Node 相关文档还是规定了一条有用的约定。

实现一个PubSub模式

一个PubSub模型主要方法有3个,订阅,退订,发布

 ####使用

挖个坑 ,找一下jquery.on()的源码,看一下它自定义事件的实现

PubSub模式不适用在一次性的事件中,,如果是用Promise的话就比较适合一次性的事件。

关于分布式事件,也可以参考一下angular.js的双向数据绑定的实现,

转载地址:http://chelo.baihongyu.com/

你可能感兴趣的文章
《为自己工作——世界顶级设计师成功法则》目录—导读
查看>>
Libreboot 项目向开源社区示好和致歉
查看>>
《CMYK 2.0——设计师色彩管理手册》—第1章1.3节副作用
查看>>
java.util.concurrent.locks.LockSupport
查看>>
红帽加入 Node.js 基金会白金会员
查看>>
《OpenGL编程指南》一2.7 独立的着色器对象
查看>>
Ionic 3.4.2 发布,漂亮的 HTML5 移动应用框架
查看>>
Linux Kernel 4.9-rc8,4.9 分支最后一个候选版
查看>>
想开发 Android 分支?没门!
查看>>
《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 2.2 相关关键技术及工作原理...
查看>>
《Nmap渗透测试指南》—第1章1.5节Mac OS安
查看>>
重磅,企业实施大数据的路径
查看>>
linux之cp/scp命令+scp命令详解
查看>>
Spark 源码分析 -- BlockStore
查看>>
《C语言编程初学者指南》一1.7 创建并运行第一个C程序
查看>>
学习和使用 PHP 应该注意的10件事
查看>>
《Ember.js实战》——2.5 Ember.js对象模型
查看>>
《响应式Web图形设计》一第13章 响应Web设计中的图像
查看>>
shiro session 监听
查看>>
定时任务框架Quartz的新玩法
查看>>