1. ホーム
  2. javascript

[解決済み] setInterval関数の初回実行を遅延させずに実行する

2022-03-20 16:29:30

質問

を設定する方法はありますか? setInterval メソッドを即座に実行し、その後タイマーで実行するようjavascriptの

どのように解決するのですか?

一番簡単なのは、最初に自分で直接関数を呼び出すことです。

foo();
setInterval(foo, delay);

しかし setInterval - 特に、ある状況下では、大量の setInterval イベントは、遅滞なく次々と到着することができます。 もうひとつの理由は、ループを停止させたい場合、明示的に 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);
})();

で、関数を定義し、サイクルを一度に開始します。