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', () => {
})
.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 () => {
await tick()
})
async function run() {
await emitter.emit('event', '...arguments')
await emitter.emit('event', 'again')
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
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, imcuttle@163.com.
License
MIT - imcuttle 🐟