Let's take stdin.on
as an example. Callbacks to stdin.on
stack, so if I write (in CoffeeScript)
stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) -> console.log 'One'
stdin.on 'data', (input) -> console.log 'Two'
then every time I hit return at the prompt, I get
One
Two
My question is, is there any way to remove/replace a callback once bound? Or is the only approach to bind a proxy callback and manage state myself?
Or you can use:
stdin.once
instead ofstdin.on
You can use
removeListener(eventType, callback)
to remove an event, which should work with all kinds of emitters.Example from the API docs:
So you need to have a variable that holds a reference to the callback, because obviously, it's otherwise impossible to tell which callback you want to have removed.
EDIT
Should be someone like this in CS:
See: http://nodejs.org/docs/latest/api/events.html#emitter.removeListener