我正在javascript写一篇“生命游戏”。我在名为doGeneration()
的函数中完成了所有逻辑。我可以从控制台反复调用它,一切都按计划进行,但是,如果我把它放在while
循环中,执行会阻止UI,我只看到最终结果(最终)。
while (existence) {
doGeneration();
}
如果我添加setTimeout()
,即使生成限制为15,浏览器实际上也会崩溃(Canary,Chrome)。
while (existence) {
setTimeout(function() {
doGeneration();
},100);
}
如何在不阻止DOM / UI的情况下每隔一秒左右调用doGeneration()
一次?
答案 0 :(得分:5)
你想要setInterval
var intervalId = setInterval(function() {
doGeneration();
}, 1000);
// call this to stop it
clearInterval(intervalId);
答案 1 :(得分:2)
我会使用requestAnimationFrame(doGeneration)
。这个功能的想法是让浏览器决定游戏逻辑或动画执行的间隔。这带来了潜在的好处。
答案 2 :(得分:0)
而不是使用setINterval
或setTimeout
并假设一些随机时间间隔足以使UI
更新你应该/ doGeneration
足够智能调用更新dom后,如果满足existence
的条件,