node.js - Removing named callbacks that are wrapped in an anonymous functions? -
is there way remove listeners on passed in named callback function wrapped in anonymous function?
update. more complete code examples below.
here details. i've function gets passed in named callback.
before
function read (message, named_callback ) { var named_callback = named_callback || default_callback , message = message || "choose: "; stdout.write(message); stdin.resume(); stdin.setencoding('utf8'); stdin.on('data', named_callback); }); }; all named_callbacks take , prepare passed in user input (answer).
answer = answer.trim().tolowercase(); i end repeating trimming , lowercasing line everywhere! wanted move step 1 place, tried prepare answer before got passed callback. wrote this:
after
function read (message, named_callback ) { var named_callback = named_callback || default_callback , message = message || "choose: "; stdout.write(message); stdin.resume(); stdin.setencoding('utf8'); stdin.on('data', function (answer) { answer = answer.trim().tolowercase(); named_callback(answer); }); }; however, results in event listeners not being removed, , pile until program crashes many listeners.
thank you.
the problem not think is. info give expect call read method everytime, , thats tomanylisteners comes place, because everytime append new 'data' listener. if change 'on' 'once' application shouldnt crash anymore:
stdin.once('data'... this of course isnt solution problem, illustrate problem (its not trim/tolowercase.
if show little bit more of code maybe able better, read-method unecessary overhead...
Comments
Post a Comment