action-emitter
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.1 • Public • Published

    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.

    Install

    npm i action-emitter

    DownloadsWeekly Downloads

    88

    Version

    0.2.1

    License

    MIT

    Last publish

    Collaborators

    • quatrodev
    • simplrjs