我有一個運行模擬,其中我想渲染的結果「活」一個小腳本:如何暫停JavaScript來允許渲染
for (i < simulation steps) {
do_simulation();
render_with_flot();
}
我注意到,該地塊只盯着最後的渲染步。
- 有沒有辦法'暫停'JavaScript以某種方式允許渲染在每次迭代後運行?
- 或者有沒有辦法讓flot同步運行?
- 或者我是否需要爲for循環的每次迭代設置自己的超時?這似乎是一種麻煩。
我有一個運行模擬,其中我想渲染的結果「活」一個小腳本:如何暫停JavaScript來允許渲染
for (i < simulation steps) {
do_simulation();
render_with_flot();
}
我注意到,該地塊只盯着最後的渲染步。
作爲@ PhonicUK解決方案的替代方案,您可以在工作結束時()安排一次setTimeout()來安排下一次調用工作(),從而使渲染有機會發生,不會讓您自己遇到任何特定的刷新率。
取決於它需要多快的速度運行,但最好的方法是使用SetInterval
僞/手寫的JavaScript,也就是說,大概-犯規運行:
var PerformedSteps;
var Interval;
PerformedSteps = 0;
Interval = setInterval(work, 1000/60); //60 times/second
function work()
{
PerformedSteps++;
if (PerformedSteps == simulation_steps)
{
clearInterval(Interval);
return;
}
do_simulation();
render_with_flot();
}
當任務持續超過1000/60 ms時,這是否不會產生不同循環迭代重疊的風險? – noio 2013-05-15 09:54:46
你的意思是'setTimeout'? – noio 2013-05-14 13:59:14