Home Identifier Source Test Repository


signals, in JavaScript, fast

NPM Build Status Codacy Badge License


Custom event/messaging system for JavaScript inspired by js-signals originally based on EventEmitter3 code base.

There are several advantages to signals over event-emitters (see Comparison between different Observer Pattern implementations). However, the current implementation of js-signals is (arguably) slow compared to other implementations (see EventsSpeedTests). mini-signals is a fast, minimal emitter, with an API similar to js-signals.



npm install mini-signals


jspm install mini-signals=github:Hypercubed/mini-signals


bower install mini-signals

Example Usage

When not using a module loader the mini-signals constructor (MiniSignal) is global.

var MiniSignal = require('mini-signals');
var mySignal = new MiniSignal();

var binding = mySignal.add(onSignal);   //add listener
mySignal.dispatch('foo', 'bar');        //dispatch signal passing custom parameters
binding.detach();                       //remove a single listener

function onSignal(foo, bar) {
  assert(foo === 'foo');
  assert(bar === 'bar');

Another Example

var myObject = {
  foo: 'bar',
  updated: new MiniSignal()

myObject.updated.add(onUpdated.bind(myObject));   //add listener with context

myObject.foo = 'baz';
myObject.updated.dispatch();                 //dispatch signal

function onUpdated() {
  assert(this === myObject);
  assert(this.foo === 'baz');


Copyright (c) 2015 Jayson Harshbarger

MIT License