Action emitter based on fbemitter. Instead of string event types we use classes (functions).
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
@types
dist
example
src
.gitignore
.travis.yml
LICENSE
README.md
package.json
tsconfig.json
tslint.json
webpack.config.js

README.md

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.

Build Status NPM version dependencies Status devDependencies Status

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);
// Or
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();
// or 
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"));
//or 
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.