删除包装在匿名函数中的命名callback?

有没有一种方法来删除传入的命名callback函数中的包装在一个匿名函数的侦听器?

UPDATE。 下面更完整的代码示例。

这里是细节。 我有一个函数,在一个命名的callback传递。

之前

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); }); }; 

所有named_callback采取并准备一个传入的用户input(答案)。

 answer = answer.trim().toLowerCase(); 

我到处都是重复修剪和缩小线! 我想把这个步骤放到一个地方,所以试图在答案被传递之前做好准备。 我写了这个:

 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); }); }; 

但是,这会导致事件监听器不能被删除,而只是堆积起来,直到程序崩溃,监听器过多。

谢谢。

问题可能不在你认为的地方。 与你给我的信息,我希望你只是每次调用读取方法,那是tomanylisteners到位,因为你每次追加一个新的数据侦听器。 如果你改变'开'到'一次'你的应用程序不应该崩溃了:

 stdin.once('data'... 

这当然不是你的问题的解决scheme,它只是为了说明你的问题在哪里(而不是修剪/ tolowercase。

如果你显示了一些你的代码,也许我们能够更好地帮助你,但可能你的读取方法只是不必要的开销…