javascript 發佈訂閱模式應用

發佈訂閱模式其實一直存在於javascript的編程思想中,javascript的事件管理機制,從某種意義上來講,就是一個發佈訂閱模式。javascript


發佈訂閱模式的好處:java

  1. 能夠解決一些異步進行的代碼jquery

  2. 就算不解決異步問題,也能夠使代碼邏輯更清晰,更加具備結構化。編程


發佈訂閱模式應用場景:異步

  1. 須要用戶肯定是否執行該操做,才能決定代碼邏輯的下一步走向。this

  2. 爲了使代碼更加結構化,邏輯清晰,能夠自定義事件,而後用相似於jquery中的$("main").trigger("eventName")的機制去觸發。spa


如下是一個簡單實用的發佈訂閱模式的實現代碼:code

//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:觸發事件blog

clipboard.png

相關文章
相關標籤/搜索