14

特定の変更についてサーバーをポーリングするアプリを作成しています。setTimeout を使用して自己呼び出し関数を使用します。基本的にこのようなもの:

<script type="text/javascript">
someFunction();

function someFunction() {
  $.getScript('/some_script');
  setTimeout(someFunction, 100000);
}
</script>

サーバーでのこのポーリングの負荷を軽減するために、タイムアウト間隔を長くしたいと考えています。1分から2分の範囲内のどこかかもしれません。setTimeout のタイムアウトが長くなりすぎて、正しく機能しなくなるポイントはありますか?

4

2 に答える 2

14

あなたは技術的にOKです。最大24.8611 日のタイムアウトを設定できます!!! あなたが本当にしたい場合。setTimeout は最大 2147483647 ミリ秒 (32 ビット整数の最大値で、約 24 日間) にすることができますが、それよりも長い場合、予期しない動作が発生します。ミリ秒の遅延値が大きいと setTimeout() が「壊れる」のはなぜですか?を参照してください。

ポーリングなどの間隔については、再帰的な setTimeout の代わりにsetIntervalを使用することをお勧めします。setInterval は、ポーリングに必要なことを正確に実行し、より詳細な制御も可能です。例: いつでも間隔を停止するには、次のように setInterval の戻り値を保存してください。

var guid = setInterval(function(){console.log("running");},1000) ;
//Your console will output "running" every second after above command!

clearInterval(guid) 
//calling the above will stop the interval; no more console.logs!
于 2012-09-10T12:20:29.203 に答える
3

setTimeout()遅延パラメータに 32 ビット整数を使用します。したがって、最大値は次のとおりです。

2147483647

再帰を使用するのではなく、次を使用するsetTimeout()ことをお勧めしsetInterval()ます。

setInterval(someFunction, 100000);

function someFunction() {
   $.getScript('/some_script');
}
于 2012-09-10T12:20:14.947 に答える