EventEx
An slower but more powerfull EventEmitter implementation. events.EventEmitter are more likely designed for low level system and sometimes hard to use. This module add some more friendly API.
Usage
EventEmitter = require("eventex").EventEmitterclass Parent constructor:()-> @name = "myobj" addChild:(child)-> # we need to maintain the listener so we can remove it later child._printChild = this.printChild.bind(this); child.on "update",child._printChild addChildEx:(child)-> # no need to maintain listener child.listenBy this,"update",printChild removeChild:(child)-> # remove with maintained listener child.removeListener "update",child._printChild removeChildEx:(child)-> # remove any listener listen by `this` # easy work! child.stopListenBy this printChild:(child)-> console.log @name,"child updates:",child.name showChilds:()-> console.log(@name); class Child extends EventEmitter @id = 0 constructor:()-> @name = "child #{Child.id++}" update:()-> @emit "update",this// old style
API
- compatible with events.EventEmitter except without domain support and force error throw.
- eventex.EventEmitter.mixin(obj): mixin to an object.
- instance eventex.EventEmitter.listenBy(who,events,callback) callback will be called with
who
as the this parameter. - instance eventex.EventEmitter.stopListenBy(who)
- instance eventex.EventEmitter.bubble(childEventEmitter,event,processor) bubble event using processor. processor should return array like ["newEventName",param1,param2...]. if no processor provided, the event will just bubbled as it is.
- instance eventex.EventEmitter.stopBubble(childEventEmitter,)
- instance eventex.EventEmitter.stopAllBubble()
- instance eventex.EventEmitter.destroy() remove all listener on the event emitter, and all bubbles.