Simple EventEmitter for your FE(mb BE)
How to install
npm install -S isemitter
bower install -S is-emitter
What for?
It's a simple implementation of event emitter that helps you to implement observers in your application. This implementation also provides an ability to classify events and split them by several groups.
Lets go:
- EventEmitter
- new EventEmitter()
- .on(eventNameList, handler)
- .off(evenNameList, [handler])
- .once(eventNameList, handler)
- .many(eventNameList, handler, times)
- .emit(eventName, List) => sync and async
- .hasGroup(groupName) //#new
- .hasEvent(eventName) //#new
- .before(eventNameList, handler) //#new
- .after(eventNameList, handler) //#new
- .offBefore(eventNameList, handler) //#new
- .offAfter(eventNameList, handler) //#new
- .getMaxListeners()
- .setMaxListeners(number)
- .group(groupName) //#new
this
inside event handler- Angular JS Example
new EventEmitter()
EventEmitter - provides event-driven system
Example:
var settings = maxListeners: 10 //10 listeners by default async: false //sync mode by default logger: consolewarn //console warn by default ; var emitter = settings;
eventEmitter.on(eventNameList, handler)
eventEmitter.addEventListener(eventNameList, handler)
Method provide ability to subscribe on some event(s) by name and react on it(them) by handler
Kind: instance method of EventEmitter
Param | Type |
---|---|
eventNameList | string | Array |
handler | function |
Examples:
var emitter = ; //register event emitter; //register several events emitter; emitter; //result: 'event1 : a + b: 3' emitter; //result: 'event2 : a + b: 9' //register event that is specially defined by using group name emitter; emitter; //result: 'event4.somegroup was emitted' //register group of event + classified them by using diff group names emitter; emitter; //result: 'event2' emitter; //result: 'event3'
eventEmitter.off(eventNameList, [handler])
eventEmitter.removeEventListener(eventNameList, [handler])
Method allows to remove events from eventEmitter by eventName, eventName.group, .group, eventNameList
Kind: instance method of EventEmitter
Param | Type |
---|---|
evenNameList | string | Array |
[handler] | function |
Examples:
var emitter = ; emitter; //you can get rid of these events by using of in this wayemitter;emitter; //or this wayemitter; //Register classified eventsemitter; //Remove all events with .group1 classifieremitter; //Remove all events with .group2 and e4emitter; emitter;emitter;emitter; emitter;//'Hello World 1'//'Hello World 2'//'hello world 3' emitter;emitter;//'hello world 3'
eventEmitter.once(eventNameList, handler)
Methods allows you to subscribe on some event(s) and remove subscription automatically after event(s) will happen (one time)
Kind: instance method of EventEmitter
Param | Type |
---|---|
eventNameList | string | Array |
handler | function |
Example:
var eventEmitter = ;var counter = 0; eventEmitter; eventEmitter;eventEmitter;eventEmitter; console; // => 1
eventEmitter.many(eventNameList, handler, times)
Methods allows you to subscribe on some event(s) and remove subscription automatically after event(s) will happen (several times)
Kind: instance method of EventEmitter
Param | Type |
---|---|
eventNameList | string | Array |
handler | function |
times | number |
Example:
var eventEmitter = ;var counter = 0; eventEmitter; eventEmitter;eventEmitter;eventEmitter;eventEmitter; console; // => 2
eventEmitter.emit(eventName, argumentsList)
eventEmitter.trigger(eventName, argumentsList)
Method allows to trigger all handler which are subscribed on some event and also pass any number of arguments
Kind: instance method of EventEmitter
Param | Type | Description |
---|---|---|
eventName | string |
|
argumentsList | arguments |
of arguments |
Example Sync and Async mode:
//sync mode examplevar ee = ; ee; { ee; console;};//'hello world sync'//'after hello world' ee = null;////////////////////////////////////////////////////////////////////////////////async mode examplevar ee = async: true; ee; { ee; console;};//'hello world here but happens before emit result'//'hello world async'
eventEmitter.hasGroup(eventNameList, handler)
Method allows you to check whether specific group is registered
var ee = ;......... ee; // => true if group exists, otherwise - false
eventEmitter.hasGroup(eventNameList, handler)
Method allows you to check whether specific event is registered
var ee = ;......... ee; // => true if group exists, otherwise - false
eventEmitter.before(eventNameList, [handler])
eventEmitter.offBefore(eventNameList, [handler])
Method helps you to register handler(s) which will be invoked before all registered (via .on) event handlers Inside it uses EventEmitter instance to register "before" action. ".before" it just sugar and you can compare it to .on method, but you should be aware that all events which will be registred via method .before will be invoked only if you have events registered via method .on
var ee = ; ee;ee;ee; // You can use event name or list with event names and use groups of course to simplify process of deletionee;ee; ee;// beforeHandler() -> someHandler1() ee;// beforeHandler2() -> someHandler3() ee; ee;// someHandler1();...
eventEmitter.after(eventNameList, [handler])
eventEmitter.offAfter(eventNameList, [handler])
Method helps you to register handler(s) which will be invoked after all registered (via .on) event handlers Inside it uses EventEmitter instance to register "after" actions. ".after" it just sugar and you can compare it to .on method, but you should be aware that all events which will be registred via method .after will be invoked only if you have events registered via method .on
var ee = ; ee;ee;ee; // You can use event name or list with event names and use groups of course to simplify process of deletionee;ee; ee;// someHandler1() -> afterHandler() ee;// someHandler3() -> afterHandler2() ee;...
eventEmitter.group(groupName)
Method allows to create a simple helper to register and unregister events for specific group
Example
var ee = ; var someGroup = ee; someGroup; someGroup; ee;//result -> 'handler of some-group event1' someGroup; //remove handlers for 'event' for some-group//also possible cases:// someGroup.off() -> remove all events// someGroup.off(['event', 'event1']); // remove events by name
eventEmitter.getMaxListeners()
Method allows to get max listeners count
Kind: instance method of EventEmitter
Returns: number
- Returns max listeners count
eventEmitter.setMaxListeners(number)
Method allows to set max listeners count
Kind: instance method of EventEmitter
Param | Type | Description |
---|---|---|
number | number |
of max listeners count |
this
inside event handler
Explanation:
var ee = ; ee;
Stop Example:
var ee = ; var counter = 1;var { console; ifcounter > 2 counter = 1; this; counter++;}; ee;ee;ee;ee;ee;ee; ee; // => results://'Counter:HELLO'//'Counter:HELLO' ee; // => results://'Counter:HELLO'//'Counter:HELLO' ee;
Angular Example
{ 'use strict'; ng ; { return { return settings; } ; } { return emitterFactory; } //using with other services SomeServiceOfYourApp$inject = 'GlobalEventEmitter'; { var state = null; return { state = currState; emitter; } { //using group to mark registred handlers for component emitter; }; { //using remove event handler according to the specific group emitter; }; ; } someDirective$inject = 'SomeServiceOfYourApp'; { return restrict: 'EA' { someService; someService; scope; } } }angular EventEmitter;
Use jsbin to see the example of using EventEmitter with angular routes