私のアプリケーションでは、次のように、0ミリ秒でsetInterval
を使用しているJavaScriptコードを見つけました。
self.setInterval("myFunction()",0);
明らかに、これは私には良い考えではないようです。ここでsetInterval
の動作がどうなるか誰か教えてもらえますか? ( "myFunction"はAJAXサーバーを呼び出します)
アプリケーションで不規則な動作をしているので、これを求めています。 90%の場合、アプリケーションは正しく動作し、サーバーへの呼び出しは1回だけ行われます。ただし、サーバーに対して複数の呼び出しが行われることがあり(現在まで、最大48呼び出し)、このコード行のせいであるとほぼ確信しています。
ブラウザは間隔の最小値を設定しました。通常は10ミリ秒ですが、ブラウザによって異なります。これは、私が許される限り速くこれを繰り返すことを意味します。 W3C仕様は4msと言っています: http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#timers
これは正しいですが、おそらく設計エラーが明らかになります。
編集:ちなみに、JavaScriptにはファーストクラスの関数があるため、文字列をsetTimeout/setIntervalに渡し、代わりに関数を渡すことはお勧めできません。
setInterval(myFunction, 0)
は最小の遅延でmyFunction
を継続的に呼び出します。これは、無限ループでmyFunction
を呼び出すのとほとんど同じです。ただし、ここではclearInterval
メソッドを使用してループを停止できます。
わずかな遅延で1回だけ実行するには、代わりにsetTimeOut
を使用します。
window.setTimeout(myFunction, 10);
AJAXを使用しているため、タイマーを使用する必要はまったくありません。現在のAJAXリクエストのコールバック(完了/成功イベント)で次のAJAXリクエストを呼び出すだけです。
現在のコードを投稿してください。さらにご案内できる場合があります。
myFunction()
にはclearInterval
があると思います。
基本的に、可能な限り頻繁に発生する可能性のある間隔を設定しました。 JavaScriptを実行しているブラウザーが、間隔の次の反復の前に実際にclearInterval
部分に到達する場合、それは問題ありません。そうでなければ、それは何度も何度も起こります。
代わりにsetTimeout
を使用してください。