为了账号安全,请及时绑定邮箱和手机立即绑定

在 Javascript 中清除超时后,如何取消 setTimeout() 中的事件

在 Javascript 中清除超时后,如何取消 setTimeout() 中的事件

大话西游666 2023-02-24 16:53:58
所以我正在尝试为 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)});
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

我的愚蠢错误。我在清理代码时不小心删除了超时。下面的代码解决了一切。


child.stdout.on("data", (data) => {

    stdout = stdout + data.toString();


    clearTimeout(timeout);


    timeout = setTimeout(() => {

        message.channel.send([stdout], {

            code: true,

            split: true

        });

    }, 3000)

});


查看完整回答
反对 回复 2023-02-24
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信