javascript setTimeout(fn(),delay)未按预期延迟

mm9b1k5b  于 2023-01-01  发布在  Java
关注(0)|答案(4)|浏览(134)

我肯定忽略了一些很明显的东西因为有些奇怪的事情正在发生
我有一段js代码,大致如下所示

setTimeout(myFn(), 20000);

如果我在到达那条线时是正确的,那么20秒后myFn应该运行正确吗?
在我的例子中,myFn是一个 AJAX 调用,它发生得相当快(不是在20秒,我只是不明白为什么。任何想法或指针?)

kb5ga3dv

kb5ga3dv1#

试试看
设置超时(myFn,20000);
当你说setTimeout(myFn(),20000)时,你告诉它计算myFn()并在20秒后调用返回值。

rta7y2nd

rta7y2nd2#

问题是myFn()是一个函数调用而不是函数指针。

setTimeout(myFn, 20000);

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

bbmckpt7

bbmckpt73#

不,正确的行应该是setTimeout(myFn, 20000);
在您的代码中,您实际上是在同一行上无延迟地调用myFn,其结果被安排在20秒后运行。

3htmauhk

3htmauhk4#

删除()。如果你放了它们,函数会被直接调用。如果没有它们,函数会作为参数传递。

相关问题