Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SetInterval是否在单独的线程上运行?这个方法是如何工作的?_Javascript_Multithreading_Setinterval - Fatal编程技术网

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所指的是事件循环。这家伙对此进行了很好的讨论: