ホームページ >ウェブフロントエンド >jsチュートリアル >`setTimeout` 関数が遅延後ではなくすぐに実行されるのはなぜですか?

`setTimeout` 関数が遅延後ではなくすぐに実行されるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-02 11:36:10513ブラウズ

Why Does My `setTimeout` Function Execute Immediately Instead of After the Delay?

setTimeout 関数の予期しない即時実行

Web ページの値を定期的に更新してサーバーの負荷を最小限に抑えようとしている開発者が、次のような問題に遭遇しました。 setTimeout() 関数が予期せぬ動作をする問題。指定された遅延後に実行されるのではなく、関数はすぐに実行されます。

提供されたコード スニペットを調べると、

window.onload = function GetUsersNumber() {
    //...
    setTimeout(GetUsersNumber(), 50000);
}

問題は、setTimeout() 関数の呼び出し方法にあります。 JavaScript では、関数呼び出しは関数名の後の括弧で示されます。ただし、この場合、GetUsersNumber() に続く括弧は、関数を参照として渡すのではなく、ただちに関数を呼び出します。

この問題を修正するには、setTimeout() 呼び出しから括弧を削除し、関数を効果的に渡します。オブジェクト自体:

setTimeout(GetUsersNumber, 50000);

これにより、setTimeout() は、指定された遅延の後に実行される関数を正しくスケジュールできるようになり、意図した遅延を考慮に入れることができます。サーバーに負荷をかけずに Web ページの値を更新します。

以上が`setTimeout` 関数が遅延後ではなくすぐに実行されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。