1

シミュレーションを実行する小さなスクリプトがあり、その結果を「ライブ」でレンダリングします。

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

プロットは最後のステップの後にのみレンダリングされることに気付きました。

  • 各繰り返しの後にレンダリングを実行できるように、javascriptを何らかの方法で「一時停止」する方法はありますか?
  • または、 flot を同期的に実行する方法はありますか?
  • または、for ループの反復ごとに独自のタイムアウトを設定する必要がありますか? これはちょっと面倒そうです。
4

2 に答える 2

4

実行する必要がある速度によって異なりますが、最良の方法は使用することです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();
}
于 2013-05-14T13:50:47.647 に答える
2

@PhonicUK のソリューションの代わりに、work() の最後に setTimeout() を実行して、work() の次の呼び出しをスケジュールし、レンダリングが発生する機会を与え、特定のリフレッシュ レートに拘束されないようにすることができます。

于 2013-05-14T13:53:14.250 に答える