javascriptが新しく、setInterval()関数を正しく使用するのに問題があります。jsのループで複数のsetInterval()関数を呼び出す
基本的には、リストにあるさまざまなパラメータに対して、それぞれ異なる間隔で関数を呼び出す必要があります。
私はmyfunctionと呼ばれる機能を持っています。私はこの関数を渡したいすべての変数を持つmyparamというリストを持っています。最後に、myfrequencyというリストがあります。myfrequencyというのは、myfunctionの各呼び出しとmyparamで指定されたパラメータとの間に必要なミリ秒単位の時間です。私はこのようなものを試していますが、うまくいきません。
for(i=0;i<myparam.length();i++;){
setInterval(function(){myfunction(myparam[i]);},myfrequency[i]);
}
上記のコードの結果は、最後のインデックスでのみ機能するということです。 myfunctionはmyparamの最後の値の正しいパラメータで正しい間隔で呼び出されます。
どうしてですか?私の考えは、setInterval()は間違った間隔で関数の呼び出しを設定していますか?
http://stackoverflow.com/questions/2728278/what-is-a-practical-use-for-a-closure-in-javascript答えを読んで、そのうちの一つは、あなたの正確な問題を示して –
非常に一般的な問題。起こっていることは、あなたのsetIntervalが起動するまでに、ループがすでに完了しているので、 'i'が最後の要素を指していることです。 – david
@davidはこれを修正する遅延を追加しますか? setIntervalが呼び出されるたびにsetTimeout()で遅延を追加しようとしましたが、現在は全く動作しません。 – Saxman13