like-events

1.0.4 • Public • Published

like-events

Extends events with async for better flow

const LikeEmitter = require('like-events');
const emitter = new LikeEmitter();
 
emitter.on('change', async function () {
  await sleep(1000);
  return true;
});
 
emitter.on('change', async function () {
  await sleep(1000);
  return false;
});
 
// it just takes 1s
emitter.emitAll('change').then(console.log); // [true, false]
 
// util
function sleep (ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

Install

npm i like-events

Features

Description

Extension of native events module (EventEmitter).
Useful for async operations.

Methods

like.emitSync(event: String, ...args): Array
like.emitAll(event: String, ...args): Promise->Array
like.emitSeq(event: String, ...args): Promise->Array

Examples

emitSync

emitter.on('update', function () {
  return true;
});
 
emitter.on('update', function () {
  return false;
});
 
console.log(emitter.emitSync('update'));
[true, false]

emitAll

emitter.on('change', async function () {
  console.log('change A1');
  await sleep(1000);
  console.log('change A2');
  return true;
});
 
emitter.on('change', async function () {
  console.log('change B1');
  await sleep(1000);
  console.log('change B2');
  return false;
});
 
console.log(await emitter.emitAll('change'));
change A1
change B1
sleep +1s
change A2
change B2
[true, false]

emitSeq

emitter.on('processing', async function () {
  console.log('processing A');
  await sleep(1000);
  return 49;
});
 
emitter.on('processing', async function () {
  console.log('processing B');
  return 51;
});
 
console.log(await emitter.emitSeq('processing'));
processing A
sleep +1s
processing B
[49, 51]

Tests

npm test

Issues

Feedback, ideas, etc are very welcome so feel free to open an issue.

License

Code released under the MIT License.

/like-events/

    Package Sidebar

    Install

    npm i like-events

    Weekly Downloads

    0

    Version

    1.0.4

    License

    MIT

    Unpacked Size

    6.12 kB

    Total Files

    7

    Last publish

    Collaborators

    • lukks