setInterval
JavaScriptのメソッドをすぐに実行し、タイマーで実行するように設定する方法はありますか?
ベストアンサー1
最初は関数を自分で直接呼び出すのが最も簡単です。
foo();
setInterval(foo, delay);
ただし、これを避けるべき十分な理由がありますsetInterval
。特に、状況によっては、一連のsetInterval
イベントが遅延なく次々に到着することがあります。もう 1 つの理由は、ループを停止する場合は明示的に呼び出す必要があるclearInterval
ため、元の呼び出しから返されたハンドルを覚えておく必要があることですsetInterval
。
したがって、代わりの方法として、代わりにfoo
以下を使用して後続の呼び出しをトリガーする方法がありますsetTimeout
。
function foo() {
// do stuff
// ...
// and schedule a repeat
setTimeout(foo, delay);
}
// start the cycle
foo();
これにより、呼び出し間に少なくともの間隔があることが保証されますdelay
。また、必要に応じてループをキャンセルすることも簡単になります。setTimeout
ループ終了条件に達したときに呼び出しを行わないだけです。
さらに良いのは、それをすべて、すぐに呼び出される関数式にラップして関数を作成し、上記のように自分自身を再度呼び出して、ループを自動的に開始することです。
(function foo() {
...
setTimeout(foo, delay);
})();
関数を定義し、サイクルを一度に開始します。