我肯定忽略了一些很明显的东西因为有些奇怪的事情正在发生我有一段js代码,大致如下所示
setTimeout(myFn(), 20000);
如果我在到达那条线时是正确的,那么20秒后myFn应该运行正确吗?在我的例子中,myFn是一个 AJAX 调用,它发生得相当快(不是在20秒,我只是不明白为什么。任何想法或指针?)
myFn
kb5ga3dv1#
试试看设置超时(myFn,20000);当你说setTimeout(myFn(),20000)时,你告诉它计算myFn()并在20秒后调用返回值。
rta7y2nd2#
问题是myFn()是一个函数调用而不是函数指针。
setTimeout(myFn, 20000);
否则,myFn将在设置计时器之前运行。
bbmckpt73#
不,正确的行应该是setTimeout(myFn, 20000);在您的代码中,您实际上是在同一行上无延迟地调用myFn,其结果被安排在20秒后运行。
3htmauhk4#
删除()。如果你放了它们,函数会被直接调用。如果没有它们,函数会作为参数传递。
()
4条答案
按热度按时间kb5ga3dv1#
试试看
设置超时(myFn,20000);
当你说setTimeout(myFn(),20000)时,你告诉它计算myFn()并在20秒后调用返回值。
rta7y2nd2#
问题是myFn()是一个函数调用而不是函数指针。
否则,myFn将在设置计时器之前运行。
bbmckpt73#
不,正确的行应该是
setTimeout(myFn, 20000);
在您的代码中,您实际上是在同一行上无延迟地调用
myFn
,其结果被安排在20秒后运行。3htmauhk4#
删除
()
。如果你放了它们,函数会被直接调用。如果没有它们,函数会作为参数传递。