Package Exports
- extended-emitter
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (extended-emitter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
extended-emitter.js
Everything you expect from require('events').EventEmitter in both the browser and client, plus:
.allOff(): removes all events from this emitter.emitter: the internal emitter used, in case you need direct access.
optional criteria
you can now using mongo-style queries (supported by sift) to subscribe to specific events (in this context .once() means meeting the criteria, not just firing an event of that type).
emitter.on('my_object_event', {
myObjectId : object.id
}, function(){
//do stuff here
});or
emitter.once('my_object_event', {
myObjectId : object.id,
myObjectValue : {
$gt : 20,
$lt : 40
}
}, function(){
//do stuff here
});
.when()
and there's also the addition of a when function which can take ready-style functions, real promises or events, making it easy to delay or wait for a state, without resorting to chaining.
emitter.when([$(document).ready, 'my-init-event', 'my-load-event'], function(){
//do stuff
});.onto()
Often you want an object to implement emitters, and while it's easy enough to wrap them, why not just have that done for you and avoid the boilerplate?
emitter.onto(MyClass.prototype);
emitter.onto(MyInstance);
emitter.onto(MyObject);or in the constructor:
emitter.onto(this);Testing
Run the tests at the project root with:
mochaEnjoy,
-Abbey Hawk Sparrow