ホームページ >ウェブフロントエンド >jsチュートリアル >`setTimeout` 関数が遅延後ではなくすぐに実行されるのはなぜですか?
setTimeout 関数の予期しない即時実行
Web ページの値を定期的に更新してサーバーの負荷を最小限に抑えようとしている開発者が、次のような問題に遭遇しました。 setTimeout() 関数が予期せぬ動作をする問題。指定された遅延後に実行されるのではなく、関数はすぐに実行されます。
提供されたコード スニペットを調べると、
window.onload = function GetUsersNumber() { //... setTimeout(GetUsersNumber(), 50000); }
問題は、setTimeout() 関数の呼び出し方法にあります。 JavaScript では、関数呼び出しは関数名の後の括弧で示されます。ただし、この場合、GetUsersNumber() に続く括弧は、関数を参照として渡すのではなく、ただちに関数を呼び出します。
この問題を修正するには、setTimeout() 呼び出しから括弧を削除し、関数を効果的に渡します。オブジェクト自体:
setTimeout(GetUsersNumber, 50000);
これにより、setTimeout() は、指定された遅延の後に実行される関数を正しくスケジュールできるようになり、意図した遅延を考慮に入れることができます。サーバーに負荷をかけずに Web ページの値を更新します。
以上が`setTimeout` 関数が遅延後ではなくすぐに実行されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。