鍍金池/ 問(wèn)答/Java  HTML/ JavaScript 中的 setTimeout 和 setInterval 中

JavaScript 中的 setTimeout 和 setInterval 中的時(shí)間是怎么控制的

比如說(shuō),我寫了一個(gè)5秒的定時(shí)器或延時(shí)器,js和瀏覽器是怎么控制這個(gè)時(shí)間的,也就是為什么5秒鐘以后才執(zhí)行,它的內(nèi)部是怎么實(shí)現(xiàn)的,為什么5秒鐘之前不會(huì)執(zhí)行,這個(gè)時(shí)間是怎么控制的,特別想知道這個(gè)問(wèn)題,網(wǎng)上也找不到相應(yīng)的答案

回答
編輯回答
茍活

是定時(shí)器搞得鬼。JavaScript引擎都有一個(gè)定時(shí)器timer,當(dāng)調(diào)用setTimeout時(shí),JS引擎會(huì)在設(shè)定的ms后將傳入的函數(shù)放入事件隊(duì)列,排隊(duì)等待主線程調(diào)用。

這里涉及的知識(shí)包括線程、同步、異步、事和件循環(huán)。由于題主關(guān)注的問(wèn)題在于如何控制延遲時(shí)間,所以這些問(wèn)題不在贅述,不過(guò)這些知識(shí)點(diǎn)值得深入學(xué)習(xí)。

2018年4月2日 07:53
編輯回答
半心人

瀏覽器引擎有JS引擎,毫無(wú)疑問(wèn)專門解析JS代碼的,同時(shí)瀏覽器還有屬于自己的時(shí)間模塊,我喜歡這個(gè)叫至于你也可以理解為別的方面,而setTimeout與setInterval都隸屬于這時(shí)間模塊,而且最重要的是 定時(shí)器屬于異步的 也就是只有同步的代碼完成后才會(huì)執(zhí)行異步的代碼 這就是所謂的線程空余時(shí),事件循環(huán)。 所以兄弟,如果非要說(shuō)底層 希望這個(gè)回答對(duì)你有所幫助,當(dāng)然這也是我自己的理解

2017年6月28日 01:12