簡體   English   中英

如何實現setTimeout()以便它可以跟蹤經過的時間而不會阻塞主線程?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM