JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8500003
  • Score
    100M100P100Q264214F

Cross-environment event emitter

Package Exports

  • event-emitter
  • event-emitter/lib/all-off
  • event-emitter/lib/core
  • event-emitter/lib/has-listeners

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (event-emitter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

EventEmitter – Cross-environment event emitter solution for JavaScript

Installation

NPM

In your project path:

$ npm install event-emitter

Browser

Browser bundle can be easily created with help of modules-webmake. Mind that it relies on some EcmaScript5 features, so for older browsers you need as well es5-shim.

Usage

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

Additional functionalities (provided as separate modules)

allOff(obj)

Remove all listeners

var eeAllOff = require('event-emitter/lib/all-off');
eeAllOff(emitter); // Removed all registered listeners on emitter

pipe(emitter1, emitter2)

Pipe events from one emitter to other

var eePipe = require('event-emitter/lib/pipe');

var emitter1 = ee(), listener1;
var emitter2 = ee(), listener2;

emitter1.on('test', listener1 = function () { });
emitter2.on('test', listener2 = function () { });

emitter1.emit('test'); // Invoked listener1
emitter2.emit('test'); // Invoked listener2

var pipe = eePipe(emitter1, emitter2);

emitter1.emit('test'); // Invoked listener1 and listener2
emitter2.emit('test'); // Invoked just listener2

pipe.close();

emitter1.emit('test'); // Invoked listener1
emitter2.emit('test'); // Invoked listener2

hasListeners(obj[, type])

Whether given object have registered listeners

var emitter = ee();
var hasListeners = require('event-emitter/lib/has-listeners');
var listner = 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

Tests Build Status

$ npm test