isg-events

Synchronous and asynchronous cross-platform library for organizing events.

isg-events

0.0.10

install

  • NPM npm install isg-events
  • GIT git clone https://github.com/isglazunov/events.git
  • download from releases

require

var Events = require("isg-events");
<script src="isg-events.js"></script>
define(["isg-events"], function(Events){});

Ability to connect with define.amd added, but not tested. If something is wrong, fix it.

usage

It is recommended to use in conjunction with the underscore and async modules.

var events = new Events;
var container = _.extend({}, new Events);

Available options:

{
    sync: false, // true // asynchronous / synchronous call handler. 
    context: this, // this in the handler for the default `container` 
    self: false, // true // adds the first argument of `self` 
    limit: null // Number // how many times to call the handler 
}

The following will be called only after a call next.

container.on("action", function(nextarg1arg2){
    setTimeout(function(){
        console.log("0");
        next();
    }, 50);
});

The function next will be called automatically after the call handler.

container.on("action", function(arg1arg2){
    setTimeout(function(){
        console.log("1");
    }, 100);
}, {sync: true});

The handler described below exclude yourself from the list of event handlers immediately after the call.

container.on("action", function(selfnextarg1arg2){
    self.off();
    setTimeout(function(){
        console.log("2");
        next();
    }, 50);
});

Available attributes of self variable:

{
    index: Number // Personal index of each handler 
    off: Function // Short-cut method to the handler could disable itself 
    limit: Function // Returns a copy of the options limit 
    // If the first argument is a number or null, the option replaces the limit for him 
}

Equivalent to calling: events.on(name, callback, {limit: 1});

container.trigger("action", function(){
    console.log("trigger");
}); 

If you call the trigger after the announcement of the above handlers, the console will look like this:

0
2
trigger
1

Available query attributes:

{
    name: undefined, // String 
    callback: undefined, // Function 
    sync: undefined, // Boolean 
    context: undefined, // any 
    self: undefined, // Boolean 
    limit: undefined // Number or Null 
}

Each specified attribute narrows the scope of the search to detach from the list of handlers.

container.off({
    name: "action"
});

Disable all event handlers "action"

versions

Bigger readme. Some fixes.

The basic functionality.