setTimeout(fn(),delay)没有按预期延迟

时间:2009-11-24 16:17:53

标签: javascript javascript-events

我必须在这里遗漏一些非常明显的东西,因为发生了一些相当奇怪的事情

我有一些js代码非常像这样

setTimeout(myFn(), 20000);

如果我在击中该线时正确,20秒后 myFn 应该正确运行?

在我的情况下myFn是一个ajax调用,它发生得非常快(不是在20秒,我只是不明白为什么。任何想法或指针?

4 个答案:

答案 0 :(得分:12)

尝试

的setTimeout(myFn,20000);

当你说setTimeout(myFn(),20000)时,告诉它评估myFn()并在20秒后调用返回值。

答案 1 :(得分:4)

问题是myFn()是函数调用而不是函数指针。 你需要这样做:

 setTimeout(myFn, 20000);

否则myFn将在设置定时器之前运行。

答案 2 :(得分:2)

不,正确的行是setTimeout(myFn, 20000);

在你的情况下,你实际上是在同一条线上毫不拖延地调用myFn,并且其结果计划在20秒后运行。

答案 3 :(得分:1)

删除()。如果你把它们,直接调用该函数。没有它们,它将函数作为参数传递。