Revision: 12099
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 2, 2009 13:53 by johnloy
Initial Code
/* @author gwilliams From the article http://justanotherdeveloper.co.uk/2008/07/24/publisher-subscriber-pattern/ */ var Publisher = function(){ var _subscribers = []; return { /* * Pushes the subscribers callback function into * the private _subscribers property. */ subscribe: function(fn){ _subscribers.push(fn); }, /* * Method is used to unsubscribe a subscribers callback function * from the publisher. */ unsubscribe: function(fn){ _newSubscribers = []; // Create an empty subscriber array /* * Loop through the _subscribers array, checking to see * whether the function in 'fn' matches any function in * the _subscribers array, if it doesn't match, push it * in the _newSubscribers array. */ for (var i = 0; i < _subscribers.length; i++) { if (_subscribers[i] !== fn) { _newSubscribers.push(fn); } } /* * Now the _newSubscribers array only contains the callback * methods we want we can re-assign it to the private * _subscribers property. */ _subscribers = _newSubscribers; }, /* * Wipes the subscriber list */ wipe: function(){ _subscribers = []; }, /* * Returns all of the current subscribers in an array */ getSubscribers: function(){ return _subscribers; } /* * The notify method is used to invoke all of the callback methods * in the _subscribers array, o is the property to be sent to the * subscriber method, this can be anything from a string to an object * or even JSON. */ notify: function(o){ for (var i = 0; i < _subscribers.length; i++) { _subscribers[i].call(o); } } } };
Initial URL
Initial Description
Initial Title
Class to implement publisher
Initial Tags
textmate
Initial Language
Other