ホームページ > ウェブフロントエンド > jsチュートリアル > `setInterval` コールバックが 1 回しか実行されないのはなぜですか?

`setInterval` コールバックが 1 回しか実行されないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-11 03:36:11
オリジナル
944 人が閲覧しました

Why Does My `setInterval` Callback Only Run Once?

setInterval コールバックの 1 回の実行:

カウンターを作成することを目的とした次のコードを考えてみましょう。

function timer() {
  console.log("timer!")
}

window.setInterval(timer(), 1000)
ログイン後にコピー

ただし、このコードはタイマー関数を 1 回だけ実行します。この問題が発生する理由とその解決方法を詳しく見てみましょう。

この問題は、setInterval の最初のパラメータが関数呼び出しではなく関数参照である必要があるために発生します。上記のコードでは、timer() がすぐに呼び出され、unknown が返されます。その結果、setInterval は 1000 ミリ秒間隔で unfineed を呼び出すように設定され、連続ループではなく 1 回の実行が行われます。

これを修正するには、関数を呼び出す代わりに関数参照を渡す必要があります。 。修正されたコードは次のとおりです。

function timer() {
  console.log("timer!");
}

window.setInterval(timer, 1000);
ログイン後にコピー

この修正されたバージョンでは、タイマーが参照として渡され、setInterval が指定された間隔でそれを呼び出すことができます。

あるいは、匿名関数を使用することもできます。コールバックとして:

window.setInterval( function() {
  console.log("timer!");
}, 1000)
ログイン後にコピー

このアプローチは短いですが、関数が増えると読みにくくなる可能性があります複雑です。

これらの変更を実装することにより、タイマー機能が希望の間隔で繰り返し実行されるようになり、カウンターが継続的に実行されるようになります。

以上が`setInterval` コールバックが 1 回しか実行されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート