events-es5

1.1.6 • Public • Published

events-es5

NPM version Build Status Clean Code Dependency Status devDependency Status License

Browser support

Chrome, Safari, Firefox, Opera, IE9+ ( If you want to use this module in IE8-, you need to modify events.js to replace the use of Array.prototype.slice(), .etc )

Installation

    npm install events-es5
 
    or 
 
    jspm install npm:events-es5

Usage

You can use it both in node.js environment and in a browser.

  • Use it as a Node module.
 
    // a.js
    var Events = require('events-es5');
 
    var WorkerManager = function () {
        this.events = new Events('message', 'error');   // Initialize events.
    };
 
    WorkerManager.prototype = {
        constructor: WorkerManager,
 
        work: function () {
            this.events.send('message', this, 'Working...');    // Dispatch messages to subscribers.
        }
    };
 
    // b.js
    var Company = function () {
        this._init();
    };
 
    Company.prototype = {
        constructor: Company,
 
        _init: function () {
            ...
            this._workerMgr = new WorkerManager();
            this._workerMgr.events.bind('message', this._receivedMsg.bind(this))  // Subscribe.
                                  .bind('error',   this._receivedErr.bind(this)); // Chainable.
        },
 
        _receivedMsg: function (workerMgr, msg) {
            alert(msg);
        },
 
        ...
    };
 
  • Use it directly in a browser. You can simply put events.js in your project and include it by html script tag.
 
    // a.js
    var WorkerManager = function () {
        this.events = new nameSpace.Events('message', 'error');   // Initialize events.
    };
 
    // Before you use it in browsers, you probably will want to replace 'nameSpace' with a real 
    // namespace. Simply update events.js.
 
    ...
    ...
 
  • Other methods in this module. ( The code of events.js is clean and well organized, I recommend you read it directly.)
 
    /**
     * Defines a list of events.
     * @param eventNames {String...}
     * @returns {Events} 
     */
    declare(eventNames)         // e.g. declare('message', 'error');
 
    /**
     * Returns whether <eventName> has been defined.
     * @param eventName {String} 
     * @returns {Boolean} 
     */
    isSupported(eventName)      // e.g. isSupported('message');
 
    unbind(eventName, fn)
 
    numListeners(eventName)
    hasListeners(eventName)
 
    /**
     * Binds a listener to '_activate' event, this listener 
     * will be noticed when any public event starts to have listeners.
     *
     * @param fn {Function} 
     * @returns {Events} A pointer to this instance, allowing call chaining.
     */   
    monitorActivation(fn)
    
    /**
     * Binds a listener to '_deactivate' event, this listener 
     * will be noticed when any public event have no listeners.
     *
     * @param fn {Function} 
     * @returns {Events} A pointer to this instance, allowing call chaining.
     */
    monitorDeactivation(fn)
 

Tests

    npm test          

Package Sidebar

Install

npm i events-es5

Weekly Downloads

13

Version

1.1.6

License

MIT

Last publish

Collaborators

  • wenwu