在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]

Posted

技术标签:

【中文标题】在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]【英文标题】:What's the easiest way to call a function every 5 seconds in jQuery? [duplicate]在 jQuery 中每 5 秒调用一次函数的最简单方法是什么? [复制] 【发布时间】:2011-01-11 08:55:15 【问题描述】:

JQuery,如何每 5 秒调用一次函数。

我正在寻找一种方法来自动更改幻灯片中的图像。

如果可能,我宁愿不安装任何其他 3rd 方插件。

【问题讨论】:

+1 表示“如果可能,我宁愿不安装任何第三方插件。” @nickf:因为 jQuery 已经是第 3 方,所以这很幽默? (但不是真的,因为我确信他已经在使用 jQuery 做其他事情了) @Mark,呵呵,不,我不是在讽刺,只是我看到很多人直接跳到插件,即使他们的问题可以用几行普通的 javascript 来解决。 几行古怪的 hack,你永远不知道它可以在哪些浏览器中工作。 请注意,对于那些希望将此技术与 AJAX 请求结合使用的用户 - 不要这样做。让您页面上的每个用户每 N 秒调用一次您的服务器相当于对自己进行 DDOS。如果您需要保持服务器和 UI 同步,请改用 WebSockets。 【参考方案1】:

您不需要 jquery,在纯 javascript 中,以下将起作用!

var intervalId = window.setInterval(function()
  /// call your function here
, 5000);

要停止循环,您可以使用

clearInterval(intervalId) 

【讨论】:

谁说我不能每 2 秒刷新一次 :D @Alucard 提问者没有说明需要停止,所以我说不需要。 @andrewb 不过,它对于发现这个问题并且确实需要 clearInterval() 的其他人很有用。 w3schools.com/jsref/met_win_clearinterval.asp 你写了一个比 w3schools 更简洁的函数——走的路!【参考方案2】:

您可以使用 setInterval 在页面上注册一个间隔,即:

setInterval(function() 
    //code goes here that will be run every 5 seconds.    
, 5000);

【讨论】:

是的,我修好了,打字太快了,知道会很快回复:) 您的开场建议仍然引用 setTimeout :) 好吧,谢谢:) 伙计,太晚了。疲倦时需要停止尝试回答问题。 你总是可以在函数中再次调用setTimeout....这就是我以前这样做的方式>。 @Mark Yup,当时间不是很关键,但工作需要定期执行时,我就是这样做的。【参考方案3】:

订阅 setInterval() 并使用 clearInterval() 停止永远循环的一个很好的例子:

function everyTime() 
    console.log('each 1 second...');


var myInterval = setInterval(everyTime, 1000);

调用此行来停止循环:

 clearInterval(myInterval);

【讨论】:

【参考方案4】:

第一个答案的小提示。如果您的函数已经定义,请引用该函数但不要调用它!!!所以不要在函数名后面加上任何括号。就像:

my_function();
setInterval(my_function,10000);

【讨论】:

如果不调用一次,第一次调用会在10000ms内。如果你马上想要一个,你仍然可以正常调用一次。 这个答案为我节省了很多时间;我一直想知道为什么我的函数没有被调用很久。幸运的是,我偶然发现了这个答案; +1【参考方案5】:

上面提到的函数无论在之前的调用中是否完成都会执行,一旦执行完成,这个函数每隔x秒运行一次

// IIFE
(function runForever()
  // Do something here
  setTimeout(runForever, 5000)
)()

// Regular function with arguments
function someFunction(file, directory)
  // Do something here
  setTimeout(someFunction, 5000, file, directory)
  // YES, setTimeout passes any extra args to
  // function being called

【讨论】:

【参考方案6】:

setIntervalsetTimeout 都可以为您工作(正如@Doug Neiner 和@John Boker 所写现在都指向setInterval)。 请参阅here 了解更多关于两者的解释,看看哪个最适合您以及如何阻止它们。

【讨论】:

【参考方案7】:

您可以使用 window.setInterval 并且时间必须以毫秒为单位定义,在以下情况下,该函数将在每一秒(1000 毫秒)后调用

<script>
  var time = 3670;
window.setInterval(function()

  // Time calculations for days, hours, minutes and seconds
    var h = Math.floor(time / 3600);
    var m = Math.floor(time % 3600 / 60);
    var s = Math.floor(time % 3600 % 60);

  // Display the result in the element with id="demo"
  document.getElementById("demo").innerhtml =  h + "h "
  + m + "m " + s + "s ";

  // If the count down is finished, write some text 
  if (time < 0) 
    clearInterval(x);
    document.getElementById("demo").innerHTML = "EXPIRED";
  

  time--;
, 1000);


</script>

【讨论】:

以上是关于在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中每 1 分钟发出一次定时 http.get 请求的最简单方法是啥?

在 iPhone 中每 60 秒调用一次方法

ReactJS 在功能组件中每 X 秒更改一次背景颜色

如何在tkinter中每10秒自动运行一次功能[重复]

在 Android 中每 10 秒显示一次数据

如何在 MVC 4 中每 3 秒刷新一次局部视图?