使用setTimeout延迟执行

3

JavaScript的超时函数是:

setTimeout(fun, 3600);

但是如果我不想运行其他函数,我可以执行 setTimeout(3600); 吗?


4
如果您没有运行其他函数,为什么需要设置超时时间? - NullUserException
4
如果计时器结束时没有要运行的内容,为什么你还要创建计时器呢?在这里提供一些更多关于你总体目标的背景会更有帮助。 - Nick Craver
3
如果你希望使JavaScript代码“休眠”,timeout(延时执行函数)并不能暂停代码执行。 - Daniel Vandersluis
它实际上是setTimeout(函数,毫秒) - nickytonline
3个回答

11

根据你所说的,你只是想在函数内延迟执行。

例如,假设你想要运行一个警报,然后在2秒后再运行第二个警报,可以像这样:

alert("Hello")
sleep
alert("World")

在JavaScript中,实现这一点的唯一100%兼容的方法是拆分函数。

function a()
{
alert("Hello")
setTimeout("b()",3000);
}
function b()
{
alert("World");
}

你也可以在setTimeout内部声明函数,像这样:

function a()
{
  alert("Hello");
  setTimeout(function() {
    alert("World");
  },3000);
}

2
setTimeout() 接受一个函数,然后是一个延迟时间。同时尽量避免传递字符串,只需使用 setTimeout(b, 3000); 即可。 - Nick Craver
@Peter - 除非你将b()函数更改为返回一个函数以传递给setTimeout(),否则它不起作用。虽然,你关于参数顺序的说法是正确的。:o) - user113716
@patrick - 你是什么意思?这个对我来说似乎是有效的。这里有一个例子。 ---- 在onLoad后2秒触发带参数的警报。 - Peter Ajtai
@Peter - 你说得完全正确。不知怎么的,在匆忙中我没注意到你在一个匿名函数中调用了'b()'。不知道我怎么会错过那个!:o) - user113716
像您这样的人让 Stackoverflow 具有意义 :))) ... 谢谢您 - Ibrahim Amer
显示剩余2条评论

5

我不确定你想要做什么。如果你想在一段时间后什么都不发生,为什么需要首先使用 setTimeout()


2

您可以始终传递一个什么也不做的处理程序:

setTimeout(function() { }, 3600);

但我几乎无法想象任何情况下这会有用。

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