event-emitter-grouped
v6.7.0
Published
Emit events in serial or parallel with support for synchronous and asynchronous listeners
Downloads
2,285
Maintainers
Readme
Event Emitter Grouped
Emit events in serial or parallel with support for synchronous and asynchronous listeners
Usage
// 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:
npm install --save event-emitter-grouped
- Import:
import * as pkg from ('event-emitter-grouped')
- Require:
const pkg = require('event-emitter-grouped')
jspm
<script type="module">
import * as pkg from '//dev.jspm.io/[email protected]'
</script>
Editions
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 environmentevent-emitter-grouped/source/index.js
is ESNext source code for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesevent-emitter-grouped/edition-browsers/index.js
is ESNext compiled for web browsers with Require for modulesevent-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
TypeScript
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
}
}
History
Discover the release history by heading on over to the HISTORY.md
file.
Backers
Code
Discover how to contribute via the CONTRIBUTING.md
file.
Authors
- Benjamin Lupton — Accelerating collaborative wisdom.
Maintainers
- Benjamin Lupton — Accelerating collaborative wisdom.
Contributors
Finances
Sponsors
- 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
Donors
- 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
License
Unless stated otherwise all works are:
- Copyright © Benjamin Lupton
and licensed under: