javascript - 如何在 Javascript 中清除超时后取消 setTimeout() 中的事件
问题描述
因此,我正在尝试为 Discord 制作一个实时控制台,以便在我离开计算机时可以看到错误。我试图做到这一点,以便每次侦听器接收数据时,它都会清除先前的超时并创建一个新超时,这样就不会发送相同的内容x
多次,因为侦听器被调用x
了多次。现在我遇到了问题。我可以清除超时但不能清除其中的事件。
child.stdout.on("data", (data) => {
stdout = stdout + data.toString();
clearTimeout(timeout);
timeout = setTimeout(() => {
message.channel.send([stdout], {
code: true,
split: true
});
})
});
所以这段代码最终仍然发送x
了很多次。我将如何取消里面的事件来解决这个问题?
编辑:我的愚蠢错误。我在清理代码时不小心删除了超时。下面的代码解决了一切。
child.stdout.on("data", (data) => {
stdout = stdout + data.toString();
clearTimeout(timeout);
timeout = setTimeout(() => {
message.channel.send([stdout], {
code: true,
split: true
});
}, 3000)
});
解决方案
我的愚蠢错误。我在清理代码时不小心删除了超时。下面的代码解决了一切。
child.stdout.on("data", (data) => {
stdout = stdout + data.toString();
clearTimeout(timeout);
timeout = setTimeout(() => {
message.channel.send([stdout], {
code: true,
split: true
});
}, 3000)
});