await-event-emitter
v2.0.2
Published
Await events library like EventEmitter
Downloads
51,101
Maintainers
Readme
await-event-emitter
Await events library like EventEmitter
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 :smile:
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 resultemitSync(event, ...args)
: boolean emit listeners synchronously
Test
npm test
Contributing
- Fork it!
- Create your new branch:
git checkout -b feature-new
orgit 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)'
orgit 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 🐟