Wondering what’s next for npm?Check out our public roadmap! »

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

    1.2.0 • Public • Published

    chnl

    Build Status npm version license

    Implementation of event channels (pub/sub, dispatcher, emitter) inspired and compatible with Chrome extensions events API.

    Install

    npm i chnl --save
    

    Docs

    https://vitalets.github.io/chnl

    Usage

    foo.js

    import Channel from 'chnl';
     
    // create channel
    export const onData = new Channel();
     
    // subscribe to channel
    onData.addListener(data => console.log(data));

    bar.js

    import {onData} from './foo';
     
    // dispatch event to channel
    onData.dispatch({foo: 'bar'});

    Adding/removing listeners in dispatching loop

    Chnl makes a copy of the listeners before starting dispatching loop. So modifying listeners list (adding/removing) in dispatching loop will affect only the next dispatch:

    const onData = new Channel();
    const listener1 = () => console.log(1);
    const listener2 = () => {
      console.log(2);
      onData.addListener(listener3);
    };
    const listener3 = () => console.log(3);
    onData.addListener(listener1);
    onData.addListener(listener2);
     
    onData.dispatch();
    // 1
    // 2
    onData.dispatch();
    // 1
    // 2
    // 3

    License

    MIT @ Vitaliy Potapov

    Keywords

    none

    Install

    npm i chnl

    DownloadsWeekly Downloads

    5,580

    Version

    1.2.0

    License

    MIT

    Unpacked Size

    33.7 kB

    Total Files

    16

    Last publish

    Collaborators

    • avatar