首頁 > web前端 > js教程 > setTimeout() 花費的時間比參數給定的時間長

setTimeout() 花費的時間比參數給定的時間長

Barbara Streisand
發布: 2025-01-04 21:48:40
原創
1013 人瀏覽過

setTimeout() takes more time than given time in param

setTimeout 不是核心 JavaScript 的一部分。是的,你沒聽錯。它是瀏覽器(在 Web 環境中)提供的 Web API 或伺服器端環境中的 Node.js API 的一部分。
眾所周知,setTimeout方法以CB函數作為參數。另一個參數是必須執行 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)
登入後複製

還有一種情況,如果我們在setTimeout中提供0ms的時間會怎麼樣。是否像正常程式碼執行一樣依序執行。
答案是否定的,因為 setTimeout 首先進入 CB 佇列,不像其他函數先在呼叫堆疊中立即執行。

以上是setTimeout() 花費的時間比參數給定的時間長的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板