我有一个运行模拟的小脚本,我想“实时”渲染结果:
for ( i < simulation steps ) {
do_simulation();
render_with_flot();
}
我注意到情节仅在最后一步之后才呈现。
- 有没有办法以某种方式“暂停”javascript以允许渲染在每次迭代后运行?
- 或者有没有办法让flot同步运行?
- 或者我是否需要为 for 循环的每次迭代设置自己的超时?这似乎有点麻烦。
我有一个运行模拟的小脚本,我想“实时”渲染结果:
for ( i < simulation steps ) {
do_simulation();
render_with_flot();
}
我注意到情节仅在最后一步之后才呈现。
取决于它需要运行多快,但最好的方法是使用SetInterval
伪代码/手写-javascript-that-probably-doesnt-run:
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();
}
作为@PhonicUK 解决方案的替代方案,您可以在 work() 结束时执行 setTimeout() 来安排对 work() 的下一次调用,从而使渲染有机会发生并且不会将自己绑定到任何特定的刷新率。