var pubsub = (function () {var q = {} topics = {}, Subuid =-1; Publish Message Q.publish = function (topic, args) {if (!topics[topic]) {return;} var subs = Topics[topic], len = subs.length; while (len--) {subs[len].func (topic, args); } return this; }; Subscription Event Q.subscribe = function (topic, func) {Topics[topic] = Topics[topic]? Topics[topic]: []; var token = (++subuid). toString (); Topics[topic].push ({token:token, func:func}); return token; }; Unsubscribe Q.canclesub=function (Subtoken) {for (var m in topics) {if (Topics[m]) {for ( var i = 0; i < topics[m].length; i++) {if (Topics[m][i].token = = = Subtoken) {Topics[m].splice (I, 1); return subtoken; }}}} return false; } RetuRN Q;}) ();//Trigger event var logmsg = function (topics, data) {Console.log ("Logging:" + topics + ":" + data);} Red Eye Subscription ' wolfcoming ' var a = pubsub.subscribe (' wolfcoming ', logmsg);//Long ear subscription ' wolfcoming ' var b = pubsub.subscribe (' Wolfcoming ', logmsg);//short tail subscription ' wolfcoming ' var c = pubsub.subscribe (' wolfcoming ', logmsg);//Publish Message The Wolf came Pubsub.publish (' Wolfcoming ', ' The Wolf came ');//Rabbit mother came back to the baby Bunny unsubscribe Pubsub.canclesub (a);p ubsub.canclesub (b);p ubsub.canclesub (c);// Release message The Wolf came to Pubsub.publish (' wolfcoming ', ' The Wolf came ');
JS Observer mode