【问题标题】:setInterval and clearInterval doesn't worksetInterval 和 clearInterval 不起作用
【发布时间】:2021-05-18 14:57:16
【问题描述】:

我不明白为什么 setInterval 和 clearInterval 不起作用...

//开始我的命令 //关闭我的命令

const { MESSAGES } = require('../../Data/constants')

module.exports.run = (client, message, args) => {

    switch (args[0]) {

        case 'on': {

            var interval = setInterval (function() {
                
                console.log('coucou')}, 2000);
        };
 
        case 'off': {

            clearInterval(interval);
        };

        break;
    };
};

module.exports.help = MESSAGES.COMMANDS.INFO.SPAM

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    我不明白为什么 setInterval 和 clearInterval 不起作用...

    了解您的代码为何不起作用的第一步是正确掌握基本语法和格式...

    您提供的代码有几个非常基本的问题。我建议在创建一个完整的不和谐机器人之前学习更多的 javascript,否则你将在每一步都面临一个又一个的问题,因为你编写的每一个命令都比打印消息更复杂。在尝试像不和谐机器人一样使用它进行高级项目之前,拥有更高级的编程语言知识总是有益的。

    您的switch 语句语法非常不正确。这就是你的switch 的样子:

    switch (args[0]) {
    
        case 'on': {
            //On Code
        };
    
        case 'off': {
            //Off Code
        };
    
        break;
    };
    

    它应该是这样的:

    switch (args[0]) {
    
        case 'on':
            //On Code
            break;
    
        case 'off':
            //Off Code
            break;
    
    };
    

    您需要以正确的方式编写代码才能使其正常工作。更不用说,您没有在“开”的情况下添加break;,这意味着您的开和关命令都试图清除间隔,并且从一开始就没有创建间隔。通过一次 google 搜索,您可以找到 switch 语句的正确语法,将其与您自己的代码进行比较,并自己修复您的代码。下次尝试做一些研究,然后再在这里提问。 在 StackOverflow 上提问之前,您需要真正尝试自己解决您遇到的问题,我们会帮助您解决您实际遇到的问题,而不是编写您的机器人的部分内容给你。

    这不是您代码中的唯一问题。即使在更正 switch 语法之后,请查看您的代码:

    switch (args[0]) {
    
        case 'on':
            var interval = setInterval (function() {
                console.log('coucou');
            }, 2000);
            break;
    
        case 'off':
            clearInterval(interval);
            break;
    
    };
    

    变量interval 在“开”的情况下定义。这意味着interval 变量只存在于“开”的情况下。在“关闭”的情况下,不存在名为 interval 的变量,您正在尝试清除不存在的间隔。您需要在整个run() 方法之外定义interval 变量,可能靠近文件顶部,然后使用它从那里设置和清除间隔。 我不会在这个答案中发布实际的完整代码,因为从我刚才描述的内容中可以很容易地做到这一点,并且我想避免简单地复制和粘贴答案而不是任何努力的情况真正了解问题所在。您需要按照我描述的方式自己修改上面的代码块,才能使这段代码正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 2013-09-28
      相关资源
      最近更新 更多