Emit events in serial or parallel with support for synchronous and asynchronous listeners
// Importer
var EventEmitterGrouped = require('event-emitter-grouped')
// Instantiate a new instance
var emitter = new EventEmitterGrouped()
// Bind an asynchronous event
emitter.on('hello', function (next) {
console.log('\tasync started')
setTimeout(function () {
console.log('\tasync finished')
next()
}, 1000)
})
// Bind a synchronous event
emitter.on('hello', function () {
console.log('\tsync started and finished')
})
// Bind a prioritized event
function vipListener() {
console.log('\tvip started and finished')
}
vipListener.priority = 1
emitter.on('hello', vipListener)
// Emit the events in serial (one after the other in a waiting fashion)
console.log('hello in serial started')
emitter.emitSerial('hello', function (err) {
console.log('hello in serial finished')
// Emit the events in parallel (all at once)
console.log('hello in parallel started')
emitter.emitParallel('hello', function (err) {
console.log('hello in parallel finished')
})
})
/* Outputs:
hello in serial started
vip started and finished
async started
async finished
sync started and finished
hello in serial finished
hello in parallel started
vip started and finished
async started
sync started and finished
async finished
hello in parallel finished
*/
- Install:
npm install --save event-emitter-grouped
- Import:
import * as pkg from ('event-emitter-grouped')
- Require:
const pkg = require('event-emitter-grouped')
<script type="module">
import * as pkg from '//dev.jspm.io/event-emitter-grouped@6.7.0'
</script>
This package is published with the following editions:
-
event-emitter-grouped
aliasesevent-emitter-grouped/index.cjs
which uses the Editions Autoloader to automatically select the correct edition for the consumer's environment -
event-emitter-grouped/source/index.js
is ESNext source code for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules -
event-emitter-grouped/edition-browsers/index.js
is ESNext compiled for web browsers with Require for modules -
event-emitter-grouped/edition-node-4/index.js
is ESNext compiled for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules
This project provides its type information via inline JSDoc Comments. To make use of this in TypeScript, set your maxNodeModuleJsDepth
compiler option to 5
or thereabouts. You can accomplish this via your tsconfig.json
file like so:
{
"compilerOptions": {
"maxNodeModuleJsDepth": 5
}
}
Discover the release history by heading on over to the HISTORY.md
file.
Discover how to contribute via the CONTRIBUTING.md
file.
- Benjamin Lupton — Accelerating collaborative wisdom.
- Benjamin Lupton — Accelerating collaborative wisdom.
- Andrew Nesbitt — Software engineer and researcher
- Balsa — We're Balsa, and we're building tools for builders.
- Codecov — Empower developers with tools to improve code quality and testing.
- Poonacha Medappa
- Rob Morris
- Sentry — Real-time crash reporting for your web apps, mobile apps, and games.
- Syntax — Syntax Podcast
- Andrew Nesbitt
- Armen Mkrtchian
- Balsa
- Chad
- Codecov
- dr.dimitru
- Elliott Ditman
- entroniq
- GitHub
- Hunter Beast
- Jean-Luc Geering
- Michael Duane Mooring
- Michael Harry Scepaniak
- Mohammed Shah
- Mr. Henry
- Nermal
- Pleo
- Poonacha Medappa
- Rob Morris
- Robert de Forest
- Sentry
- ServieJS
- Skunk Team
- Syntax
- WriterJohnBuck
Unless stated otherwise all works are:
- Copyright © Benjamin Lupton
and licensed under: