1.0.4 • Published 6 years ago
like-events v1.0.4
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-eventsFeatures
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->ArrayExamples
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 testIssues
Feedback, ideas, etc are very welcome so feel free to open an issue.
License
Code released under the MIT License.