如何暂停JavaScript以允许渲染

How to suspend JavaScript to allow render

本文关键字:JavaScript 许渲染 暂停 何暂停      更新时间:2023-09-26

我有一个运行模拟的小脚本,我想将结果"实时"呈现:

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

我注意到,情节只在最后一步后渲染。

  • 是否有一种方法可以"暂停"javascript以某种方式允许渲染在每次迭代后运行?
  • 或者有一种方法使队列同步运行?
  • 或者我需要为for循环的每次迭代设置自己的超时吗?这似乎有点麻烦。

取决于它需要运行多快,但最好的方法是使用SetInterval

伪代码/hand-written-javascript-that-probably-does -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()的下一次调用,从而使渲染有机会发生&