gpt4 book ai didi

node.js - 删除包装在匿名函数中的命名回调?

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:16 26 4
gpt4 key购买 nike

有没有办法删除封装在匿名函数中的传入命名回调函数上的监听器?

更新。下面是更完整的代码示例。

这是详细信息。我有一个在命名回调中传递的函数。

之前

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都接受并准备传入的用户输入(答案)。

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

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

谢谢。

最佳答案

问题可能并不在您想象的地方。根据您提供的信息,我希望您每次都调用 read 方法,这就是 tomanylisteners 发挥作用的地方,因为您每次都附加一个新的“数据”监听器。如果您将“on”更改为“once”,您的应用程序不应再崩溃:

stdin.once('data'...

这当然不是您问题的解决方案,它只是为了说明您的问题所在(不是修剪/小写。

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

关于node.js - 删除包装在匿名函数中的命名回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16680610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com