ホームページ >ウェブフロントエンド >jsチュートリアル >setTimeout() はパラメータで指定された時間よりも時間がかかります
setTimeout はコア JavaScript の一部ではありません。はい、正しく聞こえました。これは、ブラウザー (Web 環境) によって提供される Web API、またはサーバーサイド環境の Node.js API の一部です。
ご存知のとおり、setTimeout メソッドは CB 関数をパラメータとして受け取ります。もう 1 つのパラメータは、CB が実行されるまでの時間 (ミリ秒) です。
しかし、待ってください。setTimeout が常に指定された時間パラメータで実行される必要はありません。コール スタック、つまりメイン スレッドがコードの一部によってブロックされている場合、ブロック コードが完了した後、コール スタック内で setTimeout がすぐに実行されます。それまでは、ブラウザ コールバック キューまたはタスク キューに保存されたままになります。
console.log("HELLO"); setTimeout(() => console.log("Timeout executed"), 5000); //should be execute after 5sec let start = new Date().getTime(); let end= start; while (end < start + 10000){ end= new Date.getTime(); } //This loop will block the main thread for 10sec console.log("Time Expire"); //output--- //HELLO //Time Expire //Timeout executed (Immediately just after Time expire)
1 つのケースもあります。setTimeout に 0ms の時間を指定するとどうなるでしょうか。通常のコード実行と同様に、順番に実行されますか?
答えは「いいえ」です。コールスタックで最初にすぐに実行される他の関数とは異なり、setTimeout は最初に CB キューに入るからです。
以上がsetTimeout() はパラメータで指定された時間よりも時間がかかりますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。