javascript - 是否可以在函数内更新间隔计时器?

标签 javascript setinterval

现在已经一整天了,我似乎仍然无法解决这个问题。

我正在为我的网站开发一个项目,我只需要知道如何在它自己的间隔内从 IF 语句更改间隔计时器。

interval 将检查 $.post 是否有错误,如果有,它将显示第一个系统错误。 (以及递增另一个变量以继续错误 #2。

3 秒后,将显示错误 #2。这正是我想要的。但是,间隔一直保持在 3 秒,无论我做什么,它都不起作用。

_staffIntervalID = 3000;
serverError = 0;

staffMsg = setInterval(function() { 

        if(isInChat == true) {
        $.post('./slivechat.php', {staff:"true"}, function(data) {
        if(data == "") return;

        $('#display_msg').append( + nl2br(data) + "<br />");
        $('#display_msg').animate({scrollTop: $(document).height()}, 'slow');

        })
                .error(function() {
                 serverError++;

                if(serverError == 1) {
                $('#display_msg').append("<span style='color: red;'>System</span>: An error occured whilst we tried to fetch staff response. Please wait while I try to fix the this problem.<br />");
                _staffIntervalID = 12000;
                } else if(serverError == 2) {
                $('#display_msg').append("<span style='color: red;'>System</span>: There seems to be an error, please check your conection. Or wait a few more seconds for the final verdict.<br />");
                _staffIntervalID = 24000;
                } else if(serverError >= 3) { 
                $('#display_msg').append("<span style='color: red;'>System</span>: Due to technical difficulties we are closing this chat. Please try again later! <br />");
                clearInterval(staffMsg);
                }

        $('#display_msg').animate({scrollTop: $(document).height()}, 'slow');
        console.log("ServerError: " + serverError + " timer: " + _staffIntervalID);
        });
        }

    }, _staffIntervalID); 

即使在 console.log 上它也显示计时器已更改,但它会每 3 次更新一次。

真希望我能尽快解决这个问题!

Ps- Javascript 不是我的主要语言,PHP 才是。因此,如果您确实有解决方法,请也尝试举个例子。

最佳答案

不,您不能更改间隔时间。

但是你可以这样做:

var _staffIntervalID = 3000;
setTimeout(function() {
    // your code here
    setTimeout(arguments.callee,_staffIntervalID);
},_staffIntervalID);

关于javascript - 是否可以在函数内更新间隔计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082269/

相关文章:

javascript - 在 slider 、上一个和下一个中编辑 javascript 导航按钮

javascript - 为每张图像设置不同的间隔

javascript - 错误无法读取未定义的属性 'add'

jquery - 使用 jQuery 制作 Rolodex 向下翻转效果的动画

javascript - 显示 div 15 秒,然后显示另一个 div

javascript - 事件上的 Flash 元素

javascript - 什么是创建 JavaScript 类的正确、现代和跨浏览器安全的方法?

javascript - 获取空白网页并显示 'event.returnValue is deprecated' 警告

javascript - TinyMCE - 创建带有空/无 href 的 anchor 标记

jquery:幻灯片放映,当您在另一个浏览器选项卡中停留一段时间,然后返回到带有幻灯片放映的选项卡时,它会翻转出来