訂閱發布模式 事件

2021-09-22 18:18:24 字數 1044 閱讀 5277

實現訂閱發布模式的基本思路:

訂閱者把自己想訂閱的事件註冊到排程中心,所以第一步應該先實現訂閱者到排程中心的方法。(訂閱方法)

排程中心統一排程訂閱者註冊到排程中心的處理**。(發布方法)

訂閱者取消訂閱事件(取消訂閱方法)

直接附上**:

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 定義乙個公司物件 這裡放乙個列表來緩衝回掉函...