首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中的固定时间后停止函数的执行

在javascript中的固定时间后停止函数的执行
EN

Stack Overflow用户
提问于 2013-03-05 23:42:58
回答 4查看 8.8K关注 0票数 7

我需要让一个函数运行固定的秒数,然后终止。我可以使用jQuery或web workers,但我直接尝试这样做的尝试失败了。

Tks的帮助现在起作用了:

代码语言:javascript
运行
复制
startT = new Date().getTime();
i = 1;

while(true){
    now = new Date().getTime();
    if( (now - startT) > 100) {
        break;
    } 

    i++;
}

alert(i);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-05 23:45:14

您提出的方法不起作用,因为Javascript (主要)是单线程的-循环在无限循环中开始,所以setTimeout处理程序永远不会被调用,所以keepGoing永远不会被设置,所以循环无法结束。

最简单的方法是确定函数结束的绝对时间,并且每隔一段时间(即不是在每次迭代时)检查当前时间是否已超过该时间点。

选择一些迭代,使您在已用时间的测试效率和您准备让函数具有的“超时”量之间达到一个合理的折衷。

票数 3
EN

Stack Overflow用户

发布于 2013-03-05 23:45:27

Count开始一个无限循环,您的代码永远不会到达setTimeout()。

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 23:46:21

三个问题:

  • 您的超时设置为在一次回调中触发setTimeout将达不到,因为count永远不会结束
  • 您的alert应在while之后从count内部调用,或从setTimeout回调中调用。

解决这些问题,你的代码就应该可以工作了。尽管如此,我可能会提前设置一个结束日期,并与while中的日期进行比较。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15228004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档