await events library like EventEmitter
MIT License
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()
AwaitEventEmitter
addListener(event, listener)
: AwaitEventEmitteron
once(event, listener)
prependListener(event, listener)
: AwaitEventEmitterprepend
prependOnceListener(event, listener)
: AwaitEventEmitterprependOnce
removeListener(event, listener)
: AwaitEventEmitteroff
listeners(event)
: []emit(event, ...args)
: Promise.resolve(boolean)emitSync(event, ...args)
: booleannpm test
git checkout -b feature-new
or git checkout -b fix-which-bug
git commit -am 'feat: some description (close #123)'
or git commit -am 'fix: some description (fix #123)'
git push
This library is written and maintained by imcuttle, [email protected].
MIT - imcuttle 🐟