0.1.0 • Published 9 years ago
eventex v0.1.0
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").EventEmitter
class 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.