我想使用一个定时器作为一个回退,以防我遇到无限循环.看来设定间隔是正确的方法.但是,这对我来说不行.
从我的研究来看,似乎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回调排队等待运行在1000ms之后,但只在当前代码完成后.它无法完成,因为无限循环.