
Security News
libxml2 Maintainer Ends Embargoed Vulnerability Reports, Citing Unsustainable Burden
Libxml2’s solo maintainer drops embargoed security fixes, highlighting the burden on unpaid volunteers who keep critical open source software secure.
event-emitter
Advanced tools
The event-emitter npm package is a lightweight and flexible library for managing events in JavaScript. It allows you to create, listen to, and emit events, making it easier to handle asynchronous operations and decouple different parts of your application.
Creating an Event Emitter
This feature allows you to create a new event emitter instance. The instance can be used to manage events within your application.
const EventEmitter = require('event-emitter');
const emitter = EventEmitter();
Listening to Events
This feature allows you to listen for specific events. When the event is emitted, the provided callback function is executed.
emitter.on('event', function(data) {
console.log('Event received:', data);
});
Emitting Events
This feature allows you to emit events. When an event is emitted, all listeners for that event are called with the provided data.
emitter.emit('event', { key: 'value' });
Removing Event Listeners
This feature allows you to remove specific event listeners. This is useful for cleaning up and preventing memory leaks.
const callback = function(data) {
console.log('Event received:', data);
};
emitter.on('event', callback);
emitter.off('event', callback);
The 'events' package is a core Node.js module that provides a similar event-driven architecture. It is more robust and feature-rich compared to event-emitter, offering additional functionalities like once listeners and error handling.
The 'eventemitter3' package is a high-performance event emitter for Node.js and the browser. It is similar to event-emitter but is optimized for speed and has a smaller footprint.
The 'mitt' package is a tiny, functional event emitter. It is simpler and more lightweight compared to event-emitter, making it ideal for small projects or performance-critical applications.
var ee = require('event-emitter');
var emitter = ee({}), listener;
emitter.on('test', listener = function (args) {
// …emitter logic
});
emitter.once('test', function (args) {
// …invoked only once(!)
});
emitter.emit('test', arg1, arg2/*…args*/); // Two above listeners invoked
emitter.emit('test', arg1, arg2/*…args*/); // Only first listener invoked
emitter.off('test', listener); // Removed first listener
emitter.emit('test', arg1, arg2/*…args*/); // No listeners invoked
In your project path:
$ npm install event-emitter
Browser bundle can be easily created with help of modules-webmake. Assuming that you have latest Node.js and Git installed, following will work in command shell of any system (Linux/MacOS/Windows):
$ npm install -g webmake
$ git clone git://github.com/medikoo/event-emitter.git
$ cd event-emitter
$ npm install
$ cd ..
$ webmake --name=eventEmitter event-emitter/lib/index.js event-emitter.js
If you work with AMD modules, add amd option, so generated bundle is one:
$ webmake --name=eventEmitter --amd event-emitter/lib/index.js event-emitter.js
Mind that eventEmitter relies on some EcmaScript5 features, so for older browsers you need to load as well es5-shim
Remove all listeners
var eeAllOff = require('event-emitter/lib/all-off');
eeAllOff(emitter); // Removed all registered listeners on emitter
Unify listeners database of two emitter. Events emitted on either emitter will call listeners attached to emitter object
var eeUnify = require('event-emitter/lib/unify');
var emitter1 = ee(), listener1, listener3;
var emitter2 = ee(), listener2, listener4;
emitter1.on('test', listener1 = function () { });
emitter2.on('test', listener2 = function () { });
emitter1.emit('test'); // Invoked listener1
emitter2.emit('test'); // Invoked listener2
var unify = eeUnify(emitter1, emitter2);
emitter1.emit('test'); // Invoked listener1 and listener2
emitter2.emit('test'); // Invoked listener1 and listener2
emitter1.on('test', listener3 = function () { });
emitter2.on('test', listener4 = function () { });
emitter1.emit('test'); // Invoked listener1, listener2, listener3 and listener4
emitter2.emit('test'); // Invoked listener1, listener2, listener3 and listener4
Whether given object have registered listeners
var emitter = ee();
var hasListeners = require('event-emitter/lib/has-listeners');
var listener = function () {};
hasListeners(emitter); // false
emitter.on('foo', listener);
hasListeners(emitter); // true
hasListeners(emitter, 'foo'); // true
hasListeners(emitter, 'bar'); // false
emitter.off('foo', listener);
hasListeners(emitter, 'foo'); // false
$ npm test
FAQs
Environment agnostic event emitter
The npm package event-emitter receives a total of 5,320,017 weekly downloads. As such, event-emitter popularity was classified as popular.
We found that event-emitter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Libxml2’s solo maintainer drops embargoed security fixes, highlighting the burden on unpaid volunteers who keep critical open source software secure.
Research
Security News
Socket investigates hidden protestware in npm packages that blocks user interaction and plays the Ukrainian anthem for Russian-language visitors.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.