JavaScript:在特定时间段后调用函数

111

在JavaScript中,我如何在特定的时间间隔后调用一个函数?

这是我想要运行的函数:

function FetchData() {
}

4
setTimeout() 是一个 JavaScript 方法,用于在指定的时间后执行一次特定的函数。setInterval() 是一个 JavaScript 方法,用于按照指定的时间间隔重复执行一个特定的函数。 - Pointy
6个回答

210
你可以使用JavaScript定时事件在一定时间间隔后调用函数:
这会每3秒钟显示一个警报框:
setInterval(function(){alert("Hello")},3000);

你可以在JavaScript中使用两种时间事件方法,即:
  1. setInterval():以指定的时间间隔重复执行函数
  2. setTimeout():在等待指定的毫秒数后执行一次函数
请注意,保留HTML标签。

请注意,示例并不提供最准确的答案来回答问题(它回答了“如何在每个特定间隔后调用函数”而不是“在特定间隔后调用函数”的问题)。 - Stephane

57

在1000毫秒后执行一次FetchData()函数:

setTimeout( function() { FetchData(); }, 1000);

每1000毫秒重复执行函数FetchData()

setInterval( FetchData, 1000);

3
我认为在使用"setInterval()"时,函数名"FetchData"的圆括号不应该出现,因为这会导致函数只会被触发一次。"setInterval(FetchData,1000)"似乎是更正确的写法。我在Chrome浏览器上进行了测试。 - Saumil
7
这是错误的。在setTimeout中,FetchData()将立即运行。你需要像这样将它包装在一个函数中:setTimeout(function() { FetchData(); }, 1000); - thatOneGuy

9

ECMAScript 6 引入了箭头函数,所以现在 setTimeout() 或 setInterval() 不再需要写成这样:

setTimeout(function() { FetchData(); }, 1000)

相反,你可以使用匿名箭头函数,这看起来更干净、更清晰:

setTimeout(() => {FetchData();}, 1000)

3
你知道更加简洁的写法吗?setTimeout(FetchData, 1000) - Zsolt Meszaros
如果你在FetchData()函数内使用任何参数,脚本将立即运行。因此,你需要像我上面提到的那样将其包装在函数括号中。 - Jakub
OP没有提到任何参数,而且他发布的函数也没有任何参数。 - Zsolt Meszaros
学习新事物的时候,你不想为了更清晰而牺牲效用,对吗? - Jakub

8
听起来你正在寻找 setInterval。使用方法如下所示:
function FetchData() {
  // do something
}
setInterval(FetchData, 60000);

如果你只想调用一次某个函数,可以使用setTimeout


3

超时:

setTimeout(() => {
   console.log('Hello Timeout!')
}, 3000);

时间间隔:

setInterval(() => {
   console.log('Hello Interval!')
}, 2000);

0

setTimeout(func, 5000);

-- 这将在指定的时间后调用名为func()的函数。这里是5000毫秒,即5秒后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接