LuKks/like-events


Extends events with async for better flow

https://www.npmjs.com/like-events

License: MIT

Language: JavaScript

Keywords: async, events, extends, flow, like


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.

Project Statistics

Sourcerank 4
Repository Size 9.77 KB
Stars 0
Forks 0
Watchers 1
Open issues 0
Dependencies 1
Contributors 1
Tags 0
Created
Last updated
Last pushed

Top Contributors See all

Lucas Barrena

Packages Referencing this Repo

like-events
Extends events with async for better flow
Latest release 1.0.3 - Updated

Something wrong with this page? Make a suggestion

Last synced: 2019-11-22 23:04:56 UTC

Login to resync this repository