Javascript SetInterval是否在单独的线程上运行?这个方法是如何工作的?
我环顾四周试图了解如何Javascript SetInterval是否在单独的线程上运行?这个方法是如何工作的?,javascript,multithreading,setinterval,Javascript,Multithreading,Setinterval,我环顾四周试图了解如何SetInterval,但只找到了如何使用它。我已经知道它的功能,我只是好奇,当JS不支持线程时,它如何能够在一个单独的线程上运行一些东西(至少我读到了这个) 我希望我正确地阐述了这个问题 谢谢。setInterval不会在其他线程上运行任何内容。如果JS运行时在特定时间处于空闲状态,它会安排某些东西在特定时间运行 您可以通过以下方式尝试这种行为: setInterval(function(){ alert("Hello"); }, 1000); while (true)
SetInterval
,但只找到了如何使用它。我已经知道它的功能,我只是好奇,当JS不支持线程时,它如何能够在一个单独的线程上运行一些东西(至少我读到了这个)
我希望我正确地阐述了这个问题
谢谢。setInterval不会在其他线程上运行任何内容。如果JS运行时在特定时间处于空闲状态,它会安排某些东西在特定时间运行 您可以通过以下方式尝试这种行为:
setInterval(function(){ alert("Hello"); }, 1000);
while (true) { }
无限循环将阻止
函数
运行,因为JS运行时被卡在循环中。您似乎想了解事件循环:关于这个问题和变量有很多现有信息-请参阅,,,例如。(TLDR:setInterval可能在内部使用线程,但它总是以原子方式执行回调代码/在同一程序上下文中相互写入任何其他正在执行的JavaScript:不同的页面或WebWorker,或建立不同的程序上下文。)正确,但我需要更多关于它如何“在特定时间运行”的信息@JoséCorretjer-Gómez“当没有其他JavaScript正在运行时”。上面的示例使用forever循环,始终将JavaScript保持在相同的程序上下文中运行,因此计时器JavaScript回调永远无法运行(即使是内部触发的)。例如“idle”将在页面加载并将事件处理程序添加到元素之后,但没有正在执行的JavaScript,只有回调等待触发(包括超时)。Timothy所指的是事件循环。这家伙对此进行了很好的讨论: