Files
Zos/Skills/@be/node_modules/mini-signals/README.md

78 lines
2.4 KiB
Markdown

# mini-signals
signals, in JavaScript, fast
[![NPM](https://img.shields.io/npm/v/mini-signals.svg)](https://www.npmjs.com/package/mini-signals) [![Build Status](https://travis-ci.org/Hypercubed/mini-signals.svg)](https://travis-ci.org/Hypercubed/mini-signals/) [![Codacy Badge](https://api.codacy.com/project/badge/18fa3fdfb90b43c7966f817124307d66)](https://www.codacy.com/app/hypercubed/mini-signals) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Hypercubed/mini-signals/blob/master/LICENSE)
## Description
Custom event/messaging system for JavaScript inspired by [js-signals](https://github.com/millermedeiros/js-signals) originally based on [EventEmitter3](https://github.com/primus/eventemitter3) code base.
There are several advantages to signals over event-emitters (see [Comparison between different Observer Pattern implementations](https://github.com/millermedeiros/js-signals/wiki/Comparison-between-different-Observer-Pattern-implementations)). However, the current implementation of [js-signals](https://github.com/millermedeiros/js-signals) is (arguably) slow compared to other implementations (see [EventsSpeedTests](https://github.com/Hypercubed/EventsSpeedTests)). `mini-signals` is a fast, minimal emitter, with an API similar to [js-signals](https://github.com/millermedeiros/js-signals).
## Install
### npm:
```
npm install mini-signals
```
### jspm:
```
jspm install mini-signals=npm: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 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');
}
```
## API
See [API.md](https://github.com/Hypercubed/mini-signals/blob/master/API.md)
## License
Copyright (c) 2015 Jayson Harshbarger
MIT License