settimeout = 带有延迟的setinterval吗?

3

关于 settimeout 的快速问题,它是否像 setinterval 一样定期执行?

比如我有一行代码 setTimeout("functionx();" , 1000),那么 functionx() 只会被执行一次(1秒后执行)吗?还是会这样:

  1. 延迟1秒
  2. 运行 functionx()
  3. 之后每隔1秒执行一次 functionx()?

谢谢。


3
你的互联网搜索没有得到一个合理的答案吗?https://developer.mozilla.org/en/DOM/window.setTimeout | 你也可以试一试。 (翻译:Did you fail to find a satisfactory answer through your online search? The link https://developer.mozilla.org/en/DOM/window.setTimeout might be helpful. You could also try it out yourself.) - Felix Kling
3个回答

6

setTimeout是一次性的,你给它的函数只会被调用一次。

(离题:请注意,你几乎永远不想给setTimeoutsetInterval传递包含代码的字符串;相反,请给它一个实际的函数引用。)

因此,这将在大约半秒钟后调用函数foo一次(这些时间不精确):

function foo() {
    display("Hi there");
}
setTimeout(foo, 500);

相比之下,这种方式会每隔半秒钟左右调用一次它,直到你停止它:

var timer = setInterval(foo, 500);
// Somewhere else, stop it:
clearInterval(timer);

1
使用setTimeout(),函数将在指定的延迟后仅执行一次
这个单次执行正是与setInterval()的区别所在,后者会重复调用该函数。

0

setTimeout会在指定的毫秒数后执行给定的函数。setInterval会每隔指定的毫秒数执行一次给定的函数。如果你想让setTimeout像setInterval一样工作,你需要将指定的函数设为递归函数。


2
请不要使用W3Schools(http://w3fools.com/)作为JavaScript参考资料,尤其是其中有关`setInterval`和`setTimeout`的页面。 - Yi Jiang

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