Publisher subscriber pattern that can be used with different event emitters including browser window
npm install publisher-subscriber-patternjavascript
npm i publisher-subscriber-pattern
`Example
The example uses the browser's window object as emitterInstance.
Other valid emitter instances can be also used.
`javascript
import { Publisher } from 'publisher-subscriber-pattern';const publisher = new Publisher(window, 'addEventListener','removeEventListener');
`Publisher's subscribe method returns function, which can be used later to unsubscribe from the publisher's event.
`javascript
const unsubscribe = publisher.subscribe('scroll', (event) => {});// ...foo code...
unsubscribe();
`There is also a method unsubscribeAll for unsubscribing all subscribers from all emitter's events.
`javascript
publisher.unsubscribeAll();
``#### emitterInstance
Object, which exposes addListener and removeListener* methods
Behind the scenes, the emitterInstance is bound to addListener and removeListener methods as this* (see Function.prototype.bind)
#### addListenerMethodName, removeListenerMethodName
Names of methods (strings), which are exposed by emitterInstance* and, which add and remove event listeners, respectively
#### subscribe
Required parameters: eventName, eventCallback*
Optional parameter: subscriberInstance, which will be bound to the eventCallback argument as this* (see Function.prototype.bind)
Method subscribes eventCallback to eventName, so whenever event occurs the eventCallback* is called
* Returns function for unsubscribing from the event
#### unsubscribeAll
Unsubscribes all publisher's eventCallbacks from all emitter's eventNames*
#### eventSubscriberCount
Required parameter: eventName*
Returns number of subscribers' eventCallbacks subscribed to publisher's eventName*
#### subscribersCount
Returns number of subscriber's eventCallbacks subscribed to all publisher's eventNames*