JSPM

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

EventSignal is a lightweight, browser-safe event messaging controller.

Package Exports

  • event-signal

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-signal) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Build Status Coverage Status

EventSignal

EventSignal is a lightweight, browser-safe event messaging controller inspired by js-signals.

Installing

bower

bower install event-signal

npm

npm install event-signal

Examples

function listener(data) {
  console.log(data.message);
}

var resource = {};

// add support for `created` and `updated` events
resource.created = new EventSignal();
resource.updated = new EventSignal();

// add a listener to the `updated` event
resource.updated.addListener(listener);

// emit the `updated` event to all listeners,
// passing an optional `data` object
resource.updated.emit({message: 'foo'});

// remove the listener from the `updated` event-signal
resource.updated.removeListener(listener);

Constructor

var object = {};
object.updated = new EventSignal();

function MyClass() {
  this.updated = new EventSignal();
}

addListener(listener)

Add a listener to the event signal instance.

Returns the EventSignal. Throws TypeError if listener was already previously added.

Param Type Description
listener Function The listener function
object.saved.addListener(function(){});

// alternatively, use alias `then`
object.saved.then(function(){});

addListener(listener, scope)

Add a listener to the event signal instance, passing a scope object that will be this from inside the listener function. If scope is not provided, listener will use an anonymous {} for scope.

Returns the EventSignal. Throws TypeError if listener was already previously added.

Param Type Description
listener Function The listener function
scope Object Optional; scope that will be this inside the listener function
var scope = {
  listener: function(){}
};

object.saved.addListener(scope.listener, scope);

addListener(listener, once)

Add a listener to the event signal instance. Passing true for once will automatically remove the listener after one call.

Returns the EventSignal. Throws TypeError if listener was already previously added.

Param Type Description
listener Function The listener function
once boolean Optional; if true, listener will be removed after one call
object.saved.addListener(function(){}, true);

addListener(listener, scope, once)

The trifecta — add a listener to the event signal instance, passing a scope object that will be this from inside the listener function, and boolean true for once to automatically remove the listener after one call.

Returns the EventSignal. Throws TypeError if listener was already previously added.

Param Type Description
listener Function The listener function
scope Object Optional; scope that will be this inside the listener function
once boolean Optional; if true, listener will be removed after one call
var scope = {
  listener: function(){}
};

object.saved.addListener(scope.listener, scope, true);

emit(data)

Emit the signal to all listeners. Optionally pass data to listeners.

Returns the EventSignal.

Param Type Description
data * Optional data to be passed to listener
object.saved.emit();

// examples of passing optional data
object.saved.emit({status: 'success'});
object.saved.emit('foo');

removeListener(listener)

Removes the provided listener function.

Returns the EventSignal.

Param Type Description
listener Function The listener function to be removed
var listener = function(){};
object.saved.addListener(listener);
object.saved.removeListener(listener);

removeAllListeners()

Removes all registered listeners.

Returns the EventSignal.

object.saved.removeAllListeners();

listeners()

Returns a cloned array of registered listeners.

object.saved.listeners();
//-> [{callback:function, scope:Object, once:boolean}]

listenerCount();

Returns the number of registered listeners.

object.saved.listenerCount()
//-> number

Naming Conventions

It's recommended that EventSignal instances be named using the past-tense :

  • foo.created
  • foo.saved
  • foo.updated
  • foo.ended

are preferred over :

  • foo.create
  • foo.onSave
  • foo.afterUpdate
  • foo.ending
  • foo.end

Browser Support

  • Chrome
  • Firefox
  • IE 9+
  • IE 8 with es5-shim
  • Safari

Module Support

  • AMD
  • CommonJS
  • Browser global

License

EventSignal is free to use under the open-source MIT license.