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

Readme

Keywords

none

Package Sidebar

Install

npm i chnl

Weekly Downloads

7,725

Version

1.2.0

License

MIT

Unpacked Size

33.7 kB

Total Files

16

Last publish

Collaborators

  • vitalets