All Projects β†’ imcuttle β†’ node-await-event-emitter

imcuttle / node-await-event-emitter

Licence: MIT License
await events library like EventEmitter

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to node-await-event-emitter

event-emitter
Event Emitter module for Nest framework (node.js) πŸ¦‹
Stars: ✭ 102 (+436.84%)
Mutual labels:  events, event-emitter
spa-bus
πŸ”₯Tools for multilevel components to pass values in any SPA
Stars: ✭ 15 (-21.05%)
Mutual labels:  events, event-emitter
events
Tiny type-safe event emitter
Stars: ✭ 25 (+31.58%)
Mutual labels:  events, event-emitter
tiny-typed-emitter
Fully type-checked NodeJS EventEmitter
Stars: ✭ 96 (+405.26%)
Mutual labels:  events, event-emitter
tsee
Typed EventEmitter implemented with tsargs
Stars: ✭ 22 (+15.79%)
Mutual labels:  events, event-emitter
EventEmitter
Simple EventEmitter with multiple listeners
Stars: ✭ 19 (+0%)
Mutual labels:  events, event-emitter
micro-typed-events
The smallest, most convenient typesafe TS event emitter you'll ever need
Stars: ✭ 39 (+105.26%)
Mutual labels:  events, event-emitter
event
πŸ“† Strictly typed event emitter with asynciterator support
Stars: ✭ 30 (+57.89%)
Mutual labels:  events, event-emitter
telephone-ts
Telephone-ts: The "Event Emitter-less" TypeScript Event Architecture.
Stars: ✭ 22 (+15.79%)
Mutual labels:  events, event-emitter
event-worker
A simpler way of dealing with Web Workers
Stars: ✭ 18 (-5.26%)
Mutual labels:  events
jetemit
jetemit is an event manager for React, React Native, Vue, Angular, and all javascript project
Stars: ✭ 44 (+131.58%)
Mutual labels:  events
events-manager-io
A basic site for managing event centers and scheduling events.
Stars: ✭ 19 (+0%)
Mutual labels:  events
emitting
EventEmitter designed for TypeScript and Promises
Stars: ✭ 37 (+94.74%)
Mutual labels:  event-emitter
wp-event-calendar
The best way to manage events in WordPress
Stars: ✭ 46 (+142.11%)
Mutual labels:  events
Promise
Asynchronous Programming with Promises
Stars: ✭ 15 (-21.05%)
Mutual labels:  await
networkdays
Networkdays functions ... including `networkdays` excel like function with no dependencies (no NumPy)
Stars: ✭ 22 (+15.79%)
Mutual labels:  events
react-compose-events
A Higher-Order Component factory to attach outside event listeners
Stars: ✭ 25 (+31.58%)
Mutual labels:  events
recurring events
Elixir library for dealing with recurring events
Stars: ✭ 22 (+15.79%)
Mutual labels:  events
burns
Manage your application's events without writing spaghetti code
Stars: ✭ 86 (+352.63%)
Mutual labels:  events
node-google-calendar
Simple node module that supports Google Calendar API
Stars: ✭ 76 (+300%)
Mutual labels:  events

await-event-emitter

Note: node-await-event-emitter is just implements the series processing, If you need parallel case, Please use the package tapable which is used by webpack.

Await events library like EventEmitter

build status Test coverage NPM version NPM Downloads

Why?

The concept of Webpack plugin has lots of lifecycle hooks, they implement this via EventEmitter. In the primitive events module on nodejs, the usage as follows

const EventEmitter = require('events')
const emitter = new EventEmitter()

emitter
  .on('event', () => {
    // do something *synchronously*
  })
  .emit('event', '...arguments')

The listener must be synchronous, that is way i wrote it.
And await-event-emitter support synchronous emitter magically πŸ˜„

Installation

npm install --save await-event-emitter

Usage

const AwaitEventEmitter = require('await-event-emitter').default

const emitter = new AwaitEventEmitter()
const tick = () =>
  new Promise((resolve) => {
    setTimeout(() => {
      console.log('tick')
      resolve()
    }, 1000)
  })

emitter.on('event', async () => {
  // wait to print
  await tick()
})

async function run() {
  // NOTE: it's important to `await` the reset process
  await emitter.emit('event', '...arguments')
  await emitter.emit('event', 'again')

  // support emit it synchronously
  emitter.emitSync('event', 'again')
}

run()

API

Class AwaitEventEmitter

  • addListener(event, listener) : AwaitEventEmitter
    alias: on
  • once(event, listener)
  • prependListener(event, listener) : AwaitEventEmitter
    alias: prepend
  • prependOnceListener(event, listener) : AwaitEventEmitter
    alias: prependOnce
  • removeListener(event, listener) : AwaitEventEmitter
    alias: off
  • listeners(event) : []
  • emit(event, ...args) : Promise.resolve(boolean)
    emit listeners asynchronously, we recommended await it resolved the result
  • emitSync(event, ...args) : boolean emit listeners synchronously

Test

npm test

Contributing

  • Fork it!
  • Create your new branch:
    git checkout -b feature-new or git checkout -b fix-which-bug
  • Start your magic work now
  • Make sure npm test passes
  • Commit your changes:
    git commit -am 'feat: some description (close #123)' or git commit -am 'fix: some description (fix #123)'
  • Push to the branch: git push
  • Submit a pull request :)

Authors

This library is written and maintained by imcuttle, [email protected].

License

MIT - imcuttle 🐟

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].