摘要:发布订阅模式应用场景需要用户确定是否执行该操作,才能决定代码逻辑的下一步走向。
发布订阅模式其实一直存在于javascript的编程思想中,javascript的事件管理机制,从某种意义上来说,就是一个发布订阅模式。
发布订阅模式的好处:
可以解决一些异步进行的代码
就算不解决异步问题,也可以使代码逻辑更清晰,更加具有结构化。
发布订阅模式应用场景:
需要用户确定是否执行该操作,才能决定代码逻辑的下一步走向。
为了使代码更加结构化,逻辑清晰,可以自定义事件,然后用类似于jquery中的$("main").trigger("eventName")的机制去触发。
以下是一个简单实用的发布订阅模式的实现代码:
//events - a super-basic Javascript (publish subscribe) pattern var events = { events: {}, on: function (eventName, fn) { this.events[eventName] = this.events[eventName] || []; this.events[eventName].push(fn); }, off: function(eventName, fn) { if (this.events[eventName]) { for (var i = 0; i < this.events[eventName].length; i++) { if (this.events[eventName][i] === fn) { this.events[eventName].splice(i, 1); break; } }; } }, emit: function (eventName, data) { if (this.events[eventName]) { this.events[eventName].forEach(function(fn) { fn(data); }); } } };
用法如下:
on:绑定事件
off:取消绑定
emit:触发事件
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/83620.html
摘要:观察者模式维护单一事件对应多个依赖该事件的对象关系发布订阅维护多个事件主题及依赖各事件主题的对象之间的关系观察者模式是目标对象直接触发通知全部通知,观察对象被迫接收通知。 观察者模式(Observer) 观察者模式:定义了对象间一种一对多的依赖关系,当目标对象 Subject 的状态发生改变时,所有依赖它的对象 Observer 都会得到通知。 简单点:女神有男朋友了,朋友圈晒个图,甜...
摘要:发布订阅模式订阅者把自己想订阅的事件注册到调度中心,当发布者发布该事件到调度中心,也就是该事件触发时,由调度中心统一调度订阅者注册到调度中心的处理代码。 发布-订阅模式,看似陌生,其实不然。工作中经常会用到,例如 Node.js EventEmitter 中的 on 和 emit 方法;Vue 中的 $on 和 $emit 方法。他们都使用了发布-订阅模式,让开发变得更加高效方便。 一...
摘要:发布订阅的作用发布订阅模式可以广泛应用与异步编程中,这是一种替代传统回调函数的方案。发布订阅模式让两个对象松散耦合地联系在一起,虽然不清楚彼此的细节,但不影响它们之间的通信。 发布-订阅模式又叫观察者模式,它定义与对象间的一种一对多的关系,当一个对象的状态发生改变时,所有依赖与它的对象都将得到通知。 发布订阅的作用 发布-订阅模式可以广泛应用与异步编程中,这是一种替代传统回调函数的...
摘要:概念观察者模式被广泛地应用于客户端编程中。所有的浏览器事件,等都是使用观察者模式的例子。在观察者模式中,一个对象订阅另一个对象的指定活动并得到通知,而不是调用另一个对象的方法。此外,观察者模式还可用于实现数据绑定。 概念 观察者模式被广泛地应用于JavaScript客户端编程中。所有的浏览器事件(mouseover,keypress等)都是使用观察者模式的例子。这种模式的另一个名字叫自...
摘要:发布订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系。事件观察者模式应该是最常用的模式之一。总之,当消息一发布,所有的订阅者都会收到消息。发布订阅模式还可以用来帮助实现一些别的设计模式,比如中介者模式。 发布/订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系。当一个对象的状态(发布者)发生改变时,所有依赖于它的对象都将得到通知。在 JavaScript 开发中,我们...
阅读 847·2019-08-30 15:54
阅读 3319·2019-08-29 15:33
阅读 2703·2019-08-29 13:48
阅读 1216·2019-08-26 18:26
阅读 3334·2019-08-26 13:55
阅读 1478·2019-08-26 10:45
阅读 1165·2019-08-26 10:19
阅读 306·2019-08-26 10:16