mini-signals
    TypeScript icon, indicating that this package has built-in type declarations

    1.2.0 • Public • Published

    mini-signals

    signals, in JavaScript, fast

    NPM Build Status Codacy Badge License

    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=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

    License

    Copyright (c) 2015 Jayson Harshbarger

    MIT License

    Install

    npm i mini-signals

    DownloadsWeekly Downloads

    44,862

    Version

    1.2.0

    License

    MIT

    Last publish

    Collaborators

    • hypercubed