手机版

JavaScript观察者模式(发布/订阅)的原理与实现

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

本文结合实例阐述了JavaScript发布/订阅模式的原理和实现方法。分享给大家参考,如下:

观察者模式,也称为发布-订阅模式,定义了一对多的关系,允许多个观察者对象同时收听某个主题对象。当主体对象的状态改变时,将通知所有观察到的对象。它由两种对象组成,话题和观察者。主题负责发布事件,而观察者通过订阅这些事件来观察主题。发布者和订阅者完全分离,不知道彼此的存在。它们只共享一个自定义事件的名称。

在Nodejs中,对这种模式的本地支持是由EventEmitter实现的。事件监控机制可以理解为JavaScript中的观察者模式。

这是一个JS定义的PubSub。仔细阅读下面的代码将有助于您理解观察者模式。相关代码见github。

function PubSub(){ this . handlers={ };}PubSub.prototype={//订阅事件:函数(事件类型,处理程序){ var self=thisif(!(self.handlers中的event type)){ self . handlers[event type]=[];} self.handlers[eventType]。push(处理程序);归还这个;}、//触发事件(publish event)发出:函数(事件类型){ var self=thisvar handler args=array . prototype . slice . call(参数,1);for(var I=0;I . self . handlers[EventType]。长度;i ) { self.handlers[eventType][i]。应用(自我、手柄);}返回自我;},//删除订阅事件off:函数(事件类型,处理程序){var current event=this。处理程序[事件类型];var len=0;if(CurrentEvent){ len=CurrentEvent . length;for(var I=len-1;I=0;I-){ if(CurrentEvent[I]===handler){ CurrentEvent . splice(I,1);} } }返回此;}};var PubSub=new PubSub();var回调=函数(数据){ console.log(数据);};//订阅事件apubsub.on ('a ',函数(数据){ console . log(1 data);});pubsub.on('A '),函数(数据){ console.log(2个数据);});pubsub.on('A ',回调);//触发事件Apubsub.emit('A ','我是参数');//删除提要回调pubsub。事件a的off ('a ',回调);Pubsub.emit('A ','我是第二个调用的参数');运行结果。

关于JavaScript的更多信息,请看本网站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》。

希望本文对JavaScript编程有所帮助。

版权声明:JavaScript观察者模式(发布/订阅)的原理与实现是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。