javascript發布訂閱pubsub模式

來源:互聯網
上載者:User

標籤:item   dex   each   訊息佇列   log   pre   []   pubsub   scribe   

首先使用數組緩衝訂閱者訂閱的訊息,當訂閱者訂閱訊息的時候,把訂閱的訊息push到指定訊息的隊列中,當發行者發布訊息的時候,我們遍曆執行push到指定訊息佇列中的回調事件。

var Pubsub=(function(){    var eventObj={};    return {        subscribe:function(event,fn){            eventObj[event]=fn        },        publish:function(event){            if(eventObj[event]) eventObj[event]();        },        off:function(event,fn){            if(eventObj[event]) eventObj[event]=null;        }    }})()Pubsub.subscribe(‘event‘,function(){    console.log("正在執行,但是一個事件只能綁定一個操作");})Pubsub.publish("event");
//支援一個事件綁定多個操作var Pubsub1=(function(){    var quence={};//{‘type1‘:[],‘type2‘:[]}    return {        subscribe:function(event,fn){            if(!quence[event]) quence[event]=[];            quence[event].push(fn);        },        publish:function(event){            var eventQuence=quence[event],                len=eventQuence.length;            if(len>0){                eventQuence.forEach((item,index)=>{                    item()                })            }        },        off:function(event,fn){            var eventQuence = quence[event];            if (eventQuence) {                quence[event] = eventQuence.filter(function(item) {                    return item !== fn;                });            }        }    }})()function first(){    console.log("emit first")}function second(){    console.log("emit second")}Pubsub1.subscribe(‘a‘,first)Pubsub1.subscribe(‘a‘,second)Pubsub1.off(‘a‘,first)//退訂一個first事件Pubsub1.publish("a");

 

javascript發布訂閱pubsub模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.