mini-signals
signals, in JavaScript, fast
![License](https://img.shields.io/badge/license-MIT-blue.svg)
Description
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.
Install
npm:
npm install mini-signals
jspm:
jspm install mini-signals=github:Hypercubed/mini-signals
bower:
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 Signal = require('mini-signals');
var myObject = {
foo: 'bar',
updated: new MiniSignal()
}
myObject.updated.add(onUpdated, myObject); //add listener with context
myObject.foo = 'baz';
myObject.updated.dispatch(); //dispatch signal
function onUpdated() {
assert(this === myObject);
assert(this.foo === 'baz');
}
License
Copyright (c) 2015 Jayson Harshbarger
MIT License