事件订阅分发模型
Posted 晴天的故事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件订阅分发模型相关的知识,希望对你有一定的参考价值。
最近看了下各位大师写的事件订阅分发的模型很有感触,js果然强大到行如流水,下面这段模型摘自汤姆大叔的深入理解javascript,非常感谢原作者
原文链接:http://www.sxrczx.com/docs/js/2305513.html
function Event(name) { var handlers = []; this.getName = function () { return name; }; this.addHandler = function (handler) { handlers.push(handler); }; this.removeHandler = function (handler) { for (var i = 0; i < handlers.length; i++) { if (handlers[i] == handler) { handlers.splice(i, 1); break; } } }; this.fire = function (eventArgs) { handlers.forEach(function (h) { h(eventArgs); }); }; } function EventAggregator() { var events = []; function getEvent(eventName) { return $.grep(events, function (event) { return event.getName() === eventName; })[0]; } this.publish = function (eventName, eventArgs) { var event = getEvent(eventName); if (!event) { event = new Event(eventName); events.push(event); } event.fire(eventArgs); }; this.subscribe = function (eventName, handler) { var event = getEvent(eventName); if (!event) { event = new Event(eventName); events.push(event); } event.addHandler(handler); }; }
以上是关于事件订阅分发模型的主要内容,如果未能解决你的问题,请参考以下文章
片段实例中带有 Otto 事件总线的 IllegalArgumentException