【发布时间】:2015-07-09 06:27:57
【问题描述】:
这是一个例子:
function func1()
{
setTimeout(function(){doSomething();}, 3000);
}
for(i=0;i<10;i++)
{
func1();
}
在执行之后,延迟只发生在第一个循环中,但它没有发生在那个“for”表达式的其余循环中。
我想让延迟发生在所有循环中,而不仅仅是第一次。
我的代码有什么问题?
【问题讨论】:
-
一切都应该发生,但同时发生。
-
所有
doSomethings 都被安排在它们被安排的3秒后执行。由于它们一个接一个地被安排,它们之间几乎没有任何时间,它们将在 3 秒后执行,它们之间几乎没有任何时间。你期望会发生什么?如果您希望它们在每个 3 秒之间执行,请将它们安排在 3000、6000、9000... 或将下一个安排在当前的末尾,而不是在它们之外的循环中。 -
你为什么不增加一个计数器并在你的 doSomething 函数中吐出它来看看它被触发了多少次? (不确定时间戳是否会有所帮助,因为它们都可以打印相同的时间戳)
-
@Amadan 现在我明白了,毫秒是从执行页面的时间开始的,而不是从浏览器读取特定行的时间,这是一个误解,谢谢
-
不,它来自执行
setTimeout。但是所有的setTimeout调用都是循环执行的,它们之间没有延迟。
标签: javascript loops