ホームページ >ウェブフロントエンド >jsチュートリアル >setTimeout() はパラメータで指定された時間よりも時間がかかります

setTimeout() はパラメータで指定された時間よりも時間がかかります

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 21:48:401020ブラウズ

setTimeout() takes more time than given time in param

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 サイトの他の関連記事を参照してください。

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