1

我有一个运行模拟的小脚本,我想“实时”渲染结果:

for ( i < simulation steps ) {
    do_simulation();
    render_with_flot();
}

我注意到情节仅在最后一步之后才呈现。

  • 有没有办法以某种方式“暂停”javascript以允许渲染在每次迭代后运行?
  • 或者有没有办法让flot同步运行?
  • 或者我是否需要为 for 循环的每次迭代设置自己的超时?这似乎有点麻烦。
4

2 回答 2

4

取决于它需要运行多快,但最好的方法是使用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();
}
于 2013-05-14T13:50:47.647 回答
2

作为@PhonicUK 解决方案的替代方案,您可以在 work() 结束时执行 setTimeout() 来安排对 work() 的下一次调用,从而使渲染有机会发生并且不会将自己绑定到任何特定的刷新率。

于 2013-05-14T13:53:14.250 回答