實現訂閱發布模式的基本思路:
訂閱者把自己想訂閱的事件註冊到排程中心,所以第一步應該先實現訂閱者到排程中心的方法。(訂閱方法)
排程中心統一排程訂閱者註冊到排程中心的處理**。(發布方法)
訂閱者取消訂閱事件(取消訂閱方法)
直接附上**:
var pubsub = ,
one: function(evt, fn, ctx) ,
off: function (evt, fn)
var i, l;
for (i = 0, l = this.channels[evt].length; i < l; i++) }},
subscribe: function (evt, fn, ctx, once) ;
}this.channels[evt] = this.channels[evt] || ;
this.channels[evt].push();
},trigger: function (evt)
if (typeof (sub.fn) === 'function')
}this.channels[evt] = evtsubscribers;
while(evtsubscribersforexec.length > 0) }}
};例子:
function handler ()
function handler2 ()
var p1 = new object();
p1.name = '小張';
var p2 = new object();
p2.name = '小王';
pubsub.on('p1', handler, p1);
pubsub.on('p2', handler, p1);
pubsub.on('p1', handler2, p2);
pubsub.on('p2', handler2, p2);
pubsub.trigger('p1') // 小張 小王
JavaScript事件發布 訂閱
1 發布 訂閱模式也是諸多設計模式當中的一種 2 這種方式可以在es5下相當優雅地處理非同步操作 3 什麼是發布 訂閱呢?我們舉個栗子 假設fn1,fn2,fn3都可以視作乙個事件的發布者,執行它,就會發布乙個事件。這個時候,我們可以通過乙個事件的訂閱者去批量訂閱並處理這些事件,包括它們的先後順序。...
發布 訂閱模式
發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....
發布訂閱模式
不同的語言,相同的模式。最近在關注設計模式的知識,發布訂閱模式其實是物件間一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴與它的物件都將得到狀態改變的通知。作用 1 廣泛應用於非同步程式設計中 2 物件間鬆散耦合的編寫 自定義事件 let corp 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...