Await events library like EventEmitter
npm install await-event-emitterAwait events library like EventEmitter




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
``javascript
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:
`bash`
npm install --save await-event-emitter
`javascript
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()
`
- addListener(event, listener) : AwaitEventEmitter on
alias: once(event, listener)
- prependListener(event, listener)
- : AwaitEventEmitter prepend
alias: prependOnceListener(event, listener)
- : AwaitEventEmitter prependOnce
alias: removeListener(event, listener)
- : AwaitEventEmitter off
alias: listeners(event)
- : []emit(event, ...args)
- : Promise.resolve(boolean) emitSync(event, ...args)
emit listeners asynchronously, we recommended await it resolved the result
- : boolean
emit listeners synchronously
`bash`
npm test
- Fork it!
- Create your new branch:
git checkout -b feature-new or git checkout -b fix-which-buggit commit -am 'feat: some description (close #123)'
- Start your magic work now
- Make sure npm test passes
- Commit your changes:
or git commit -am 'fix: some description (fix #123)'git push`
- Push to the branch:
- Submit a pull request :)
This library is written and maintained by imcuttle, imcuttle@163.com.
MIT - imcuttle 🐟