摘要:發布訂閱模式應用場景需要用戶確定是否執行該操作,才能決定代碼邏輯的下一步走向。
發布訂閱模式其實一直存在于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:觸發事件
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83620.html
摘要:觀察者模式維護單一事件對應多個依賴該事件的對象關系發布訂閱維護多個事件主題及依賴各事件主題的對象之間的關系觀察者模式是目標對象直接觸發通知全部通知,觀察對象被迫接收通知。 觀察者模式(Observer) 觀察者模式:定義了對象間一種一對多的依賴關系,當目標對象 Subject 的狀態發生改變時,所有依賴它的對象 Observer 都會得到通知。 簡單點:女神有男朋友了,朋友圈曬個圖,甜...
摘要:發布訂閱模式訂閱者把自己想訂閱的事件注冊到調度中心,當發布者發布該事件到調度中心,也就是該事件觸發時,由調度中心統一調度訂閱者注冊到調度中心的處理代碼。 發布-訂閱模式,看似陌生,其實不然。工作中經常會用到,例如 Node.js EventEmitter 中的 on 和 emit 方法;Vue 中的 $on 和 $emit 方法。他們都使用了發布-訂閱模式,讓開發變得更加高效方便。 一...
摘要:發布訂閱的作用發布訂閱模式可以廣泛應用與異步編程中,這是一種替代傳統回調函數的方案。發布訂閱模式讓兩個對象松散耦合地聯系在一起,雖然不清楚彼此的細節,但不影響它們之間的通信。 發布-訂閱模式又叫觀察者模式,它定義與對象間的一種一對多的關系,當一個對象的狀態發生改變時,所有依賴與它的對象都將得到通知。 發布訂閱的作用 發布-訂閱模式可以廣泛應用與異步編程中,這是一種替代傳統回調函數的...
摘要:概念觀察者模式被廣泛地應用于客戶端編程中。所有的瀏覽器事件,等都是使用觀察者模式的例子。在觀察者模式中,一個對象訂閱另一個對象的指定活動并得到通知,而不是調用另一個對象的方法。此外,觀察者模式還可用于實現數據綁定。 概念 觀察者模式被廣泛地應用于JavaScript客戶端編程中。所有的瀏覽器事件(mouseover,keypress等)都是使用觀察者模式的例子。這種模式的另一個名字叫自...
摘要:發布訂閱模式又叫觀察者模式,它定義對象間的一種一對多的依賴關系。事件觀察者模式應該是最常用的模式之一。總之,當消息一發布,所有的訂閱者都會收到消息。發布訂閱模式還可以用來幫助實現一些別的設計模式,比如中介者模式。 發布/訂閱模式又叫觀察者模式,它定義對象間的一種一對多的依賴關系。當一個對象的狀態(發布者)發生改變時,所有依賴于它的對象都將得到通知。在 JavaScript 開發中,我們...
閱讀 856·2019-08-30 15:54
閱讀 3322·2019-08-29 15:33
閱讀 2707·2019-08-29 13:48
閱讀 1229·2019-08-26 18:26
閱讀 3341·2019-08-26 13:55
閱讀 1492·2019-08-26 10:45
閱讀 1174·2019-08-26 10:19
閱讀 313·2019-08-26 10:16