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.

Dependents (0)

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