object-events

1.0.0 • Public • Published

object-events.js

NPM version npm Travis

Is an Object extension class which adds asynchronous functions to Objects as well as firing events on field change

var EventedObject = require('array-events');
var myObject = new EventedObject();

events

change : fired any time a field is altered

events

get : get a value

myObject.get('user.first.name');

set : set a value

myObject.set('user.address.postalcode', '94063');

emitter functions

EventedObjects are also Emitters but have an expanded syntax from extended-emitter and the additional .when() call.

myObject.on('change', function(event){ });
myObject.once('change', function(event){ });
myObject.off('change', function(event){ });
myObject.emit('change'[, arguments]);

async functions

forEachEmission : execute serially

myObject.forEachEmission(function(item, index, done){
    somethingAsynchronous(function(){
        done();
    });
}, function(){
    //we're all done!
});

forAllEmissions : execute all jobs in parallel

myObject.forAllEmissions(function(item, index, done){
    somethingAsynchronous(function(){
        done();
    });
}, function(){
    //we're all done!
});

forAllEmissionsInPool : execute all jobs in parallel up to a maximum #, then queue for later

myObject.forAllEmissionsInPool(poolSize, function(item, index, done){
    somethingAsynchronous(function(){
        done();
    });
}, function(){
    //we're all done!
});

utility functions

map : map each field in the object

new EventedObject({a:1, b:2}).map(function(value){return value+1}) //returns {a:2, b:3};

filter : filter fields from an object

new EventedObject({a:1, b:2}).filter(function(value){return value == 1}) //returns {a:1};

EventedObject.is : is the provided object an instance of EventedArray

EventedObject.is(new EventedObject()); //returns true
EventedObject.is({}) //returns false

Testing

just run

mocha

Enjoy,

-Abbey Hawk Sparrow

Readme

Keywords

Package Sidebar

Install

npm i object-events

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • khrome