javascript设置间隔作为单独的线程运行?

标签 javascript

我想使用计时器作为备用,以防我陷入无限循环。似乎设置间隔是执行此操作的正确方法。但是,它对我不起作用。

根据我的研究,setInterval 似乎应该在后台的单独线程中运行,但我没有看到。

为什么会发生这种行为?我该如何解决这个问题?

var time = 0;
window.setInterval(function(){time++;}, 1000);
while (true) {
    //stuff done
    if (time >= 5) {
        break;
    }
}

最佳答案

浏览器 javascript 在单线程中运行。因此,如果您执行的操作花费的时间太长 - 它会卡住浏览器。

有关详细信息,请参阅 John Resig 文章:http://ejohn.org/blog/how-javascript-timers-work/

读完那篇文章后,您会发现您的 setInterval 回调排队等待在 1000 毫秒后运行,但仅在当前代码完成后才运行。但由于无限循环,它无法完成。

关于javascript设置间隔作为单独的线程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504811/

相关文章:

javascript - 为脚本定义一个 id 并在同一脚本中引用该 id

javascript - 仅通过 http 使用客户端 Javascript 访问 Dropbox 上的文件

javascript - 如何获取另一个 View 中元素的引用ID - UI5

javascript - jquery 1.10.4 中面板的 Accordion 调整高度

javascript - 当我调用 d3.behavior.zoom 时,我的图形 range.domain() 变为空

javascript - lodash .filter 一个带有字段值子数组的数组

javascript - 下划线js通过ID查找项目

javascript - 如何将 "n"定义为任何自然基数变量

javascript - Symfony2 可以用 ajax 刷新 twigs block 吗?

javascript - 仅在执行某些事件后才打开链接中的 href