我需要让一个函数运行固定的秒数,然后终止。我可以使用jQuery或web workers,但我直接尝试这样做的尝试失败了。
Tks的帮助现在起作用了:
startT = new Date().getTime();
i = 1;
while(true){
now = new Date().getTime();
if( (now - startT) > 100) {
break;
}
i++;
}
alert(i);
发布于 2013-03-05 23:45:14
您提出的方法不起作用,因为Javascript (主要)是单线程的-循环在无限循环中开始,所以setTimeout
处理程序永远不会被调用,所以keepGoing
永远不会被设置,所以循环无法结束。
最简单的方法是确定函数结束的绝对时间,并且每隔一段时间(即不是在每次迭代时)检查当前时间是否已超过该时间点。
选择一些迭代,使您在已用时间的测试效率和您准备让函数具有的“超时”量之间达到一个合理的折衷。
发布于 2013-03-05 23:45:27
Count开始一个无限循环,您的代码永远不会到达setTimeout()。
发布于 2013-03-05 23:46:21
三个问题:
setTimeout
将达不到,因为count
永远不会结束alert
应在while
之后从count
内部调用,或从setTimeout
回调中调用。解决这些问题,你的代码就应该可以工作了。尽管如此,我可能会提前设置一个结束日期,并与while
中的日期进行比较。
https://stackoverflow.com/questions/15228004
复制相似问题