当前位置: 首页 > 面试题库 >

AJAX间隔刷新?

毕胡非
2023-03-14
问题内容

我正在尝试使AJAX函数更新约30秒。我已经完成了一个简单的版本,下面是代码。

var refInterval = window.setInterval('update()', 30000); // 30 seconds

var update = function() {
    $.ajax({
        type : 'POST',
        url : 'post.php',
        success : function(data){
            $('.voters').html(data);
        },
    });
};

这有效,但是,当该函数被首次调用时,我不希望它等待30秒,我只希望该函数调用,然后等待30秒,再次调用,等待30秒,再次调用,等等。有什么帮助吗?


问题答案:

考虑setTimeout改用-更可靠。
setInterval当窗口没有焦点时,计时器可以堆叠,然后在再次获得焦点时,所有计时器立即运行。使用setTimeout还会确保如果第一个请求由于某种原因阻塞,则不会导致多个AJAX请求排队。

要立即开始循环,请使用包裹在函数周围的IIFE(“立即调用的函数表达式”):

(function update() {
    $.ajax({
        ...                        // pass existing options
    }).then(function() {           // on completion, restart
       setTimeout(update, 30000);  // function refers to itself
    });
})();                              // automatically invoke for first run

ps请勿将字符串参数用作setIntervalsetTimeout-只需直接传递函数引用即可。



 类似资料:
  • 问题内容: 在这里,所有帮助都值得赞赏。我正在用php构建一个Web应用程序,并且正在使用Yii MVC框架,该框架具有很多内置工具。正如标题所示,我需要每10秒刷新一次div。目前我有这个ajax功能 对于不熟悉Yii的人,它将大多数php文件存储在一个名为protected的文件夹中。就是这样,上面的代码ajaxRequest.open行要求将URL存储在受保护的文件夹中,因此我不断收到禁止访

  • 我只想在进行ajax调用时清除上一个间隔并设置一个新的间隔。 当前代码为: 我尝试了许多推荐的变化,以便能够从函数外部清除间隔。如; 将"间隔"变量设置为null或false, 窗设定间隔, 在setInterval中写入计数函数, 将count函数作为ajax函数之外的单独函数编写, 但这两种变化都没有消除间隔。 稍后,我还需要清除键入的间隔。

  • 让事件反复发生 用法 Your browser does not support the video tag. 案例:坏掉的小台灯 功能:不停闪烁 工作原理 在配置项中可以选择每隔多少秒反转一次 例:制作一个闪烁的灯 例:温度过高时会发出“哔哔”声报警

  • # interval(date) Alias for interval.floor(date). For example, d3.time.day(new Date()) returns midnight (12:00 AM) on the current day, in local time. # interval.floor(date) Rounds down the specified da

  • 我有一组不重叠的,不相邻的区间,例如[{10,15},{30,35},{20,25}]。它们没有排序,但如果需要,我可以对它们进行排序。 现在,我得到了一些新的区间,例如{5,32},并希望生成一组新的区间来描述差异:这个新区间所覆盖的范围不在该集合中。在这个例子中,答案是:[{5,9},{16,19},{26,29}]。 计算这个的快速算法是什么?请注意,集合中通常有1个,有时有2个,很少有3个

  • 我正在测试kafka,希望很快能把它放在我的生产堆栈中。 我正在使用文件和来测试kafka的功能。 我创建了一个有2个分区的主题,但我看到我的生产者正在发送的所有消息都将发送到一个分区。 我在网上搜索了这个,读到有一个名为的设置,它告诉生产者更改它当前写入的分区,默认为10分钟。 我正在尝试更改此设置,但我不知道在哪里?