项目作者: LuKks

项目描述 :
Extends events with async for better flow
高级语言: JavaScript
项目地址: git://github.com/LuKks/like-events.git
创建时间: 2019-11-18T22:15:08Z
项目社区:https://github.com/LuKks/like-events

开源协议:MIT License

下载


like-events

Extends events with async for better flow

  1. const LikeEmitter = require('like-events');
  2. const emitter = new LikeEmitter();
  3. emitter.on('change', async function () {
  4. await sleep(1000);
  5. return true;
  6. });
  7. emitter.on('change', async function () {
  8. await sleep(1000);
  9. return false;
  10. });
  11. // it just takes 1s
  12. emitter.emitAll('change').then(console.log); // [true, false]
  13. // util
  14. function sleep (ms) {
  15. return new Promise(resolve => setTimeout(resolve, ms));
  16. }

Install

  1. npm i like-events

Features

Description

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

Methods

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

Examples

emitSync

  1. emitter.on('update', function () {
  2. return true;
  3. });
  4. emitter.on('update', function () {
  5. return false;
  6. });
  7. console.log(emitter.emitSync('update'));
  1. [true, false]

emitAll

  1. emitter.on('change', async function () {
  2. console.log('change A1');
  3. await sleep(1000);
  4. console.log('change A2');
  5. return true;
  6. });
  7. emitter.on('change', async function () {
  8. console.log('change B1');
  9. await sleep(1000);
  10. console.log('change B2');
  11. return false;
  12. });
  13. console.log(await emitter.emitAll('change'));
  1. change A1
  2. change B1
  3. sleep +1s
  4. change A2
  5. change B2
  6. [true, false]

emitSeq

  1. emitter.on('processing', async function () {
  2. console.log('processing A');
  3. await sleep(1000);
  4. return 49;
  5. });
  6. emitter.on('processing', async function () {
  7. console.log('processing B');
  8. return 51;
  9. });
  10. console.log(await emitter.emitSeq('processing'));
  1. processing A
  2. sleep +1s
  3. processing B
  4. [49, 51]

Tests

  1. npm test

Issues

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

License

Code released under the MIT License.