Javascript 当浏览器选项卡为背景时,setInterval会无故停止

Javascript 当浏览器选项卡为背景时,setInterval会无故停止,javascript,ajax,setinterval,Javascript,Ajax,Setinterval,我正在开发一个应用程序,它使用setInterval使用AJAX每2分钟向数据库发送一次当前时间戳 但不知怎的,setInterval在几分钟后停止了(我没有计算出确切的时间),但我相信当我在20-30分钟内没有打开浏览器的选项卡时,就会发生这种情况 function tmstmp() { $.post("send_functions.php?act=time"); } $(function() { setInterval(tmstmp, 60000); }); 如果该选项卡不在前台,se

我正在开发一个应用程序,它使用setInterval使用AJAX每2分钟向数据库发送一次当前时间戳

但不知怎的,setInterval在几分钟后停止了(我没有计算出确切的时间),但我相信当我在20-30分钟内没有打开浏览器的选项卡时,就会发生这种情况

function tmstmp() {
$.post("send_functions.php?act=time");
}

$(function() { 
setInterval(tmstmp, 60000);
});
如果该选项卡不在前台,setInterval停止是正常的吗

如果是,如何防止setInterval停止?或者检查它是否停止


谢谢

无代码+无调试信息=很难判断出哪里出了问题

为了确保在使用
setInterval
执行的代码(方法)中添加以下行,并在20-30分钟后观察控制台中是否仍有输出

console.log('Yep! I am alive!');
EDIT:可以是任何内容,但请尝试更改tmstmp方法,以便在执行POST请求后包含回调函数。这样你至少会知道它是有效的

function tmstmp() {
    $.post("send_functions.php?act=time", function(data){
        console.log('Yep! I am alive!');
    });
}

没有代码+没有调试信息=很难判断出哪里出了问题

为了确保在使用
setInterval
执行的代码(方法)中添加以下行,并在20-30分钟后观察控制台中是否仍有输出

console.log('Yep! I am alive!');
EDIT:可以是任何内容,但请尝试更改tmstmp方法,以便在执行POST请求后包含回调函数。这样你至少会知道它是有效的

function tmstmp() {
    $.post("send_functions.php?act=time", function(data){
        console.log('Yep! I am alive!');
    });
}

这是不应该发生的。 浏览器可能确实会将计时器分辨率降低到1/s左右,但无法清除设置间隔


您的代码中是否存在导致
clearInterval
的错误?

这是不应该发生的。 浏览器可能确实会将计时器分辨率降低到1/s左右,但无法清除设置间隔


您的代码中是否存在导致
clearInterval
的错误?

您应该尝试在页面启动时进行函数调用:

test();
然后循环该函数:

function test() {
    setTimeout(function() {
        // your code
        test();
    }, 2000);
}

您应该尝试在页面启动时进行函数调用:

test();
然后循环该函数:

function test() {
    setTimeout(function() {
        // your code
        test();
    }, 2000);
}


好。。。如果你有代码,你会花时间去调试它吗?也就是说,等待几次20-30分钟@gdoron只需在调试时将间隔时间更改为几秒钟。将尝试在此处写入thx。顺便问一下,我应该使用setTimeout和repeated函数吗?它比setInterval好吗?一般来说,
setTimeout()
已经证明比
setInterval()
@holodoc更可靠-我更喜欢
setTimeout()
而不是
setInterval()
,在许多情况下,它们都可以工作,但间隔为60秒,我不知道一个人或多或少可靠的说法是否准确。嗯。。。如果你有代码,你会花时间去调试它吗?也就是说,等待几次20-30分钟@gdoron只需在调试时将间隔时间更改为几秒钟。将尝试在此处写入thx。顺便问一下,我应该使用setTimeout和repeated函数吗?它比setInterval好吗?一般来说,
setTimeout()
已经证明比
setInterval()
@holodoc更可靠-我更喜欢
setTimeout()
而不是
setInterval()
,在许多情况下,它们都可以工作,但间隔为60秒,我不知道一个人或多或少可靠的说法是否准确。请看这个问题:检查我编辑的答案。如果间隔有效,至少应该给你一个提示。@amnotiam你不能在wiki上发表评论!!!顺便说一句,为什么要向web服务器发送时间戳?我确信有一种方法可以让您的web服务器获取您在每次POST请求中试图发送的确切时间戳数据。@amnotiam。你在
Meta
LOL中给了我一个新问题的想法…看这个问题:检查我编辑的答案。如果间隔有效,至少应该给你一个提示。@amnotiam你不能在wiki上发表评论!!!顺便说一句,为什么要向web服务器发送时间戳?我确信有一种方法可以让您的web服务器获取您在每次POST请求中试图发送的确切时间戳数据。@amnotiam。你在
Meta
LOL中给了我一个新问题的想法……不,我在这里添加的代码中没有bug。当我在谷歌上搜索时,我看到很多ppl都面临这个问题。嗯,我从来没有听说过这个问题。你能举出一些来源吗?例如,没有,我在这里添加的代码中没有bug。当我在谷歌上搜索时,我看到很多ppl都面临这个问题。嗯,我从来没有听说过这个问题。你能举出一些来源吗?例如