[英]How is setTimeout() implemented such that it can keep track of the time elapsed without blocking the main thread?
給定setTimeout
調用
setTimeout(function() {
console.log('hello')
}, 1000)
您知道您的代碼將在> = 1000ms內運行。
但是,如果JavaScript是單線程的,則setTimeout
調用如何以非阻塞方式跟蹤經過的時間量?
我知道事件循環的基礎,並且了解在那x時間之后,回調傳遞到了回調隊列; 但是,我不了解的是setTimeout如何能夠在不降低執行線程速度的情況下在后台跟蹤時間。
即使它是同時運行(不是並行運行)的,並且使用了某種調度程序,它也不會影響其余同步運行的代碼的性能嗎?
setTimeout
由node.js實現,不是javascript的實際組成部分。 這使其可以稍微違反規則。 javascript中沒有辦法在不阻塞主線程的情況下延遲代碼的執行,因此,包裝JS引擎的環境實現了setTimeout來為我們提供該功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.