在 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)

});


大话西游666
浏览 145回答 1
1回答

九州编程

我的愚蠢错误。我在清理代码时不小心删除了超时。下面的代码解决了一切。child.stdout.on("data", (data) => {    stdout = stdout + data.toString();    clearTimeout(timeout);    timeout = setTimeout(() => {        message.channel.send([stdout], {            code: true,            split: true        });    }, 3000)});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript