action-emitter
Action emitter based on fbemitter. Instead of string event types we use classes (functions).
The package is most useful when used with TypeScript.
Get started
$ npm install action-emitter --save-dev
Usage
First import the action-emitter
package and then create a new emitter instance.
import { ActionEmitter } from "action-emitter";
const Emitter = new ActionEmitter();
API
constructor(): void
Create a new emitter instance.
Emitter construction example:
const Emitter = new ActionEmitter();
addListener(actionClass, callback): EventSubscription
Register a specific callback to be called on a particular action event. A subscription is returned that can be called to remove the listener.
Arguments
Argument | Type | Description |
---|
actionClass | Function | Action class function. |
callback | (action: TAction) => void | Listener callback function. |
Add listener example:
class MyAction {
constructor(private value: string) { }
public get Value() {
return this.value;
}
}
let subsciption = Emitter.addListener<MyAction>(MyAction, action => {
console.log(action.Value);
});
once(actionClass, callback): EventSubscription
Similar to addListener()
but the callback is removed after it is invoked once. A subscription is returned that can be called to remove the listener.
Arguments
Argument | Type | Description |
---|
actionClass | Function | Action class function. |
callback | (action: TAction) => void | Listener callback function. |
Add once listener example:
class MyAction {
constructor(private value: string) { }
public get Value() {
return this.value;
}
}
let subsciption = Emitter.once<MyAction>(MyAction, action => {
console.log(action.Value);
});
removeAllListeners(actionClass): void
Removes all of the registered listeners. If provide actionClass
, only listeners for that action class are removed.
Arguments
Argument | Type | Description |
---|
actionClass [*] | Function | Action class function. |
[*] - optional.
Remove all listeners example:
class MyAction {
constructor(private value: string) { }
public get Value() {
return this.value;
}
}
Emitter.removeAllListeners(MyAction);
Emitter.removeAllListeners();
listeners(actionClass): Function[]
Returns an array of listeners that are currently registered for the given action class.
Arguments
Argument | Type | Description |
---|
actionClass | Function | Action class function. |
Listeners list example:
let listenersList = Emitter.listeners();
listenersCount(actionClass): number
Return listeners count that are currently registered for the given action class.
If action class is not specified, method will return all registered action listeners count.
Arguments
Argument | Type | Description |
---|
actionClass [*] | Function | Action class function. |
[*] - optional.
Listeners list example:
class MyAction {
constructor(private value: string) { }
public get Value() {
return this.value;
}
}
let globalListenersCount = Emitter.listenersCount();
let listenersCount = Emitter.listenersCount(MyAction);
emit(action): void
Emits an action event with the given data. All callbacks that are listening to the particular action event will be notified.
Arguments
Argument | Type | Description |
---|
action | TAction | Action class instance. |
Action emit example:
class MyAction {
constructor(private value: string) { }
public get Value() {
return this.value;
}
}
Emitter.emit<MyAction>(new MyAction("value"));
Emitter.emit(new MyAction("value"));
Debuging
You can listen to all actions with AnyAction
class.
import { AnyAction } from "action-emitter";
Emitter.addListener(AnyAction, anyAction => {
let actionInstance = anyAction.Action;
console.log(actionInstance);
});
License
Released under the MIT license.