e2 (Emit-Event) is a custom event emitter.
JavaScript
Latest commit 0d06ee6 Mar 8, 2016 @xnimorz 1.0.3

README.md

E2

E2 is a custom event emitter for Node.js and the browser with async events supporting.

E2 supporting CommonJS and AMD modules.

Installing

Node.js

Using npm:

npm install e2

Browsers

Using bower:

bower install e2

Using script tag:

<script type="text/javascript" src="e2.min.js"></script>

Simple usage

As standalone object

var E2 = require('e2');

var e2 = new E2;

e2.on('my-event-name', function myEventHandler() {});

e2.emit('my-event-name', {someEventData: someEventValue});

Using inheritance

Constructors:

function SomeClass() {

}

SomeClass.prototype = new E2;

var instance = new SomeClass;

instance.on('event', eventHandler).emit('event');

Object.create:

var instance = Object.create(new E2);

instance.on('event', eventHandler).emit('event');

Description

Create E2 instance:

var e2 = new E2();

You can inherit custom Objects from e2:

1)

function Constructor() {}
Constructor.prototype = new E2;

var instance = new Constructor;

2)

var instance = Object.create(new E2);

Listening to events

// Basic
e2.on('event', handler);

// Assign handler to several events
e2.on(['my-event', 'second-event'], handler)

// Once
e2.once('event', handler);
// Or
e2.on('event', handler, {once: true});

// Using object
e2.on({
    event: eventHandler,
    secondEvent: secondEventHandler
});

Emitting

e2.emit('event-name');

// With data
e2.emit('event-name', {foo: 'bar'});

// Emit several events
e2.emit(['event-name', 'second-event']);
e2.emit(['event-name', 'second-event'], {foo: 'bar'});

// Emit event async
e2.emitAsync('event-name');
e2.emitAsync('event-name', {foo: 'bar'});
e2.emitAsync(['event-name', 'second-event']);
e2.emitAsync(['event-name', 'second-event'], {foo: 'bar'});

Event data

Events are objects having the following keys:

  • data: the data attached to the event.
  • type: the event type.
  • target: the event emitter.

For example:

e2.on('event', function(e) {
    console.log(e.type) // -> 'event'
    console.log(e.target) // -> e2
    console.log(e.data) // -> {foo: 'bar'}
}.emit('event', {foo: 'bar'});

Removing event handler

// Remove all handlers attached to the given event
e2.off('event');

// Remove handler from event directly
e2.off('event', handler);

// Remove all handlers from several events
e2.off(['event', 'second-event']);

// Remove handler from several events
e2.off(['event', 'second-event'], eventHandler);

Get event listeners

// Return every matching handlers for a given event name
e2.listeners('event');