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
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 😄
npm install --save await-event-emitter
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
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
npm test
- 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 :)
This library is written and maintained by imcuttle, [email protected].
MIT - imcuttle 🐟