0

私は現在、永遠にループを実行する JavaScript を作成しています。ただし、数時間後にスクリプトが機能しなくなり、スクリプトを続行するか停止するかを尋ねられます。とにかくこれを修正するか、いくつかの自動化ツールを使用して Firefox を再起動し、JavaScript を再度実行します。ほとんどの時間、私はキーボードから離れているので

4

2 に答える 2

0

JavaScript プロンプトが長時間実行されるのを防ぐには、時々 JavaScript に他のイベントを処理させる必要があります。これを行う古典的な方法は、このように を使用していsetTimeout()ます。

function doNextChunkOfWork() {

    // do some work here

    if (moreWorkToDo) {
        setTimeout(doNextChunkofWork, 1);
    }
}

を使用setTimeout()すると、JavaScript エンジンがイベント キューに戻って他のイベントを処理できるため、実行時間の長いスクリプトの警告が回避されます。


本当に何をしようとしているのかを説明していただければ、さらに良いオプションを提案できるかもしれません。ある種の無限ループを実行している場合、ブラウザーの JavaScript は、通常のメカニズムがイベント ハンドラーを作成し、イベントがコードを実行するようにするイベント ドリブン環境であることを意味します。何かをポーリングする無限ループ用ではありません。

于 2013-11-09T06:10:14.547 に答える
0

id は、いかなる種類の無限ループも使用しないことを強くお勧めします。使用すると、問題が発生するだけです。setTimeout()代わりに、javascriptや関数の使用を検討したいsetInterval()... X ミリ秒ごとに実行するコードのブロックを指定できるようにする

ここでドキュメントを見つけることができます

setTimeout()

setInterval()

于 2013-11-09T06:10:28.393 に答える