繁体   English   中英

setInterval 和 clearInterval 不起作用

[英]setInterval and clearInterval doesn't work

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

//On 开始我的命令 //Off 停止我的命令

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

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

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

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

您的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变量,可能在文件顶部附近,然后使用它从那里设置和清除间隔。 我不会在这个答案中发布实际的完整代码,因为从我刚刚描述的内容中可以很容易地做到这一点,并且我想避免简单地复制和粘贴答案而不是努力真正理解什么的情况问题是。 您将需要按照我描述的方式自己修改上述代码块,以使此代码正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM