JavaScript 中的 setInterval 和 clearInterval 作为单线程语言

setInterval and clearInterval in JavaScript as a single thread language

我无法理解 setIntervalclearInterval 在 JavaScript 中的工作方式。

我已经阅读了关于这两个函数的不同文章,但我仍然感到困惑。

鉴于 JavaScript 是 single thread 那么当我们调用 test=setInterval(function(){}, t) 时,我们将安排我们的函数每 t 毫秒执行一次。除非我们clearInterval(test)

每个 setInterval 调用 returns 一个唯一值,当传递到 clearInterval 时停止返回该值的 setInterval 的特定调用。

因此,在您的示例中,调用 setInterval 时返回的 test 将不同于另一个 setIntervalsetTimeout 调用返回的值。因此,在执行 clearInterval(test); 时,只有返回 test 的调用会在 运行 间隔停止。

What does that mean? Does it mean that by clearInterval we cancle the setInterval which is already in the queue of JavaScript?

是的。

What would happen if we setInterval several times but clearInterval only once?

每个 setInterval returns 一个句柄,您可以将其与 clearInterval 一起使用以停止该特定计时器。每个计时器都是单独处理的。

Can we clearInterval in setInterval?

是的。

How JavaScript handles the scheduled process?

与任何其他事件非常相似。每隔一定时间触发一个事件,事件处理程序调用您指定的回调函数。如果某个脚本在事件触发时是运行,那么当控件返回给浏览器时会处理该事件。